Как направить действие к контроллеру приложения в Rails 3?
-
23-10-2019 - |
Вопрос
Я использую Gem Rails3-JQUERY-AutoCoplete и не имел никаких проблем с ним, однако теперь я перенес свою форму автозаполнения в шаблон приложения, и поэтому вызовы 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
... будет направлено на метод «some_route» в Application_controller.rb.
Еще один некро, но есть более сухой способ сделать это, по сравнению с решением Pavling
get :autocomplete_category_name, controller:"application"
Я пытался (вчера) перенести его в контроллер приложений, чтобы попытаться лучше использовать код и не связать его с конкретным контроллером. Только сегодня я понял, что это не имеет смысла, так как контроллер, используемый для ответа на этот вызов, будет совершенно другим объектом для контроллера, который в любом случае, представляющий представление.
Используя Rails 4, вы должны использовать Get, а не совпадать ...
# 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"
В рельсах 4 используйте это:
get 'application/autocomplete_category_name', as: 'autocomplete_category_name'
У вас есть 'autocomplete_category_name_path' вам ссылки