Как вы направляете действие на контроллер приложения в Rails 3?

Я использую gem rails3-jquery-autocomplete и не имею никаких проблем с этим, однако теперь я переместил свою форму автозаполнения в шаблон приложения, и поэтому вызовы ajax теперь обрабатываются контроллером приложения, поэтому мои маршруты изменено с:

home/autocomplete_category_name

и теперь нужно удалить домашний объект, а путь:

home_autocomplete_category_name_path

в

autocomplete_category_name_path

У кого-нибудь есть идеи? Все еще изучая все входы и выходы Rails, так что это для меня сейчас тупик.

Спасибо.

Ответы

Ответ 1

URL-адреса не сопоставляются непосредственно с ApplicationController - только подклассами.

Вам нужно перевести вызов на autocomplete на другой контроллер. Расположение формы не должно иметь значения, если вы передаете правильный путь, когда вы определяете свой text_field

Ответ 2

Старый пост, но принятый ответ неверен. Хотя дух этого права - вы, вероятно, должны перенести свой метод на более подходящий контроллер; но если вы настаиваете на наличии метода в application_controller.rb

# routes.rb
match '/some_route', to: 'application#some_route', as: :some_route

... будет перенаправлен на метод some_route в application_controller.rb.

Ответ 3

Еще один некро, но есть более суровый дружелюбный способ сделать это, по сравнению с павильонным решением

get :autocomplete_category_name, controller:"application"

Я пытался (вчера) переместить его на контроллер приложения, чтобы лучше повторить код и не привязывать его к определенному контроллеру. Только сегодня я понял, что это не имеет никакого смысла, поскольку контроллер, используемый для ответа на этот вызов, будет совершенно другим объектом для контроллера, отображающего представление в любом случае.

Ответ 4

Используя Rails 4, вам нужно использовать get, а не соответствовать...

# routes.rb
get '/autocomplete_category_name', to: 'application#autocomplete_category_name', as: :autocomplete_category_name

Ответ 5

попробуйте что-то вроде

match "home/autocomplete_category_name", "home#autocomplete_category_name", :as => "autocomplete_category_name"