如何将操作路由到Rails 3中的应用程序控制器?

我正在使用gem rails3-jquery-autocomplete并且没有任何问题,但是我现在已经将我的自动完成表单移动到应用程序模板中,因此ajax调用现在由应用程序控制器处理,因此我的路由已从以下更改:

home/autocomplete_category_name 

现在需要删除主页并从以下路径:

 home_autocomplete_category_name_path 

至:

 autocomplete_category_name_path 

有人有任何想法吗? 还在学习Rails的来龙去脉,所以现在这对我来说是个死胡同。

谢谢。

URL不直接映射到ApplicationController – 只是它的子类。

您需要将调用autocomplete移动到另一个控制器。 只要在定义text_field时传递正确的路径,表单的位置就不会产生影响

老post,但接受的答案是错误的。 虽然它的精神是正确的 – 你应该把你的方法转移到一个更合适的控制器; 但是如果你坚持在application_controller.rb中使用该方法

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

…将路由到application_controller.rb中的’some_route’方法。

与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" 

在Rails 4中,使用:

 get 'application/autocomplete_category_name', as: 'autocomplete_category_name' 

您有’autocomplete_category_name_path’链接