Rails 3のアプリケーションコントローラーにアクションをどのようにルーティングしますか?
-
23-10-2019 - |
質問
私はGEM Rails3-jquery-autocompleteを使用しており、問題はありませんでしたが、Autocompleteフォームをアプリケーションテンプレートに移動したため、Ajax呼び出しはアプリケーションコントローラーによって処理されているため、ルートは次のものから変更されました。
home/autocomplete_category_name
そして今、家を削除し、からの道を削除する必要があります。
home_autocomplete_category_name_path
に:
autocomplete_category_name_path
誰かがアイデアを持っていますか?まだレールの内と外を学んでいるので、これは今私にとって行き止まりです。
ありがとう。
解決
URLは直接マップしません ApplicationController
- それのサブクラスのみ。
通話を移動する必要があります autocomplete
別のコントローラーに。フォームの位置は、あなたがあなたの定義するときに正しいパスを通過する限り、違いを生むべきではありません text_field
他のヒント
古い投稿ですが、受け入れられた答えは間違っています。その精神は正しいですが、おそらくあなたの方法をより適切なコントローラーに移動する必要があります。しかし、もしあなたが 主張 application_controller.rbにメソッドを持つことについて
# routes.rb
match '/some_route', to: 'application#some_route', as: :some_route
... application_controller.rbの「some_route」メソッドにルーティングします。
別のネクロですが、これを行うためのより乾燥したフレンドリーな方法があります。
get :autocomplete_category_name, controller:"application"
私は(昨日)アプリケーションコントローラーに移動して、コードをより良く再利用し、特定のコントローラーに結び付けないようにしようとしていました。この呼び出しに答えるために使用されていたコントローラーは、とにかくビューをレンダリングするコントローラーとはまったく異なるオブジェクトになるので、今日だけ私はそれが意味をなさないことを認識しました。
レール4を使用すると、一致しないでください...
# routes.rb
get '/autocomplete_category_name', to: 'application#autocomplete_category_name', as: :autocomplete_category_name
ようなものを試してみてください
match "home/autocomplete_category_name", "home#autocomplete_category_name", :as => "autocomplete_category_name"
Rails 4では、これを使用してください。
get 'application/autocomplete_category_name', as: 'autocomplete_category_name'
リンクに「autocomplete_category_name_path」があります