Rails 3のアプリケーションコントローラーにアクションをどのようにルーティングしますか?

StackOverflow https://stackoverflow.com/questions/4778301

質問

私は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」があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top