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

Har*_*and 16 routes ruby-on-rails applicationcontroller ruby-on-rails-3

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

home/autocomplete_category_name
Run Code Online (Sandbox Code Playgroud)

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

home_autocomplete_category_name_path
Run Code Online (Sandbox Code Playgroud)

至:

autocomplete_category_name_path
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Pav*_*ing 33

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

# routes.rb
match '/some_route', to: 'application#some_route', as: :some_route
Run Code Online (Sandbox Code Playgroud)

...将路由到application_controller.rb中的'some_route'方法.


Dan*_*ail 8

URL不直接映射到ApplicationController- 只有它的子类.

您需要将呼叫转移autocomplete到另一个控制器.只要您在定义表单时传递正确的路径,表单的位置就不会产生任何影响text_field

  • 如果你愿意,可以路由到ApplicationController - 只是违反事物的约定 (4认同)

Kar*_*k T 7

与pavling的解决方案相比,还有一种更加干燥的方法可以做到这一点

get :autocomplete_category_name, controller:"application"
Run Code Online (Sandbox Code Playgroud)

我正在尝试(昨天)将其移动到应用程序控制器,以尝试更好地重用代码,而不是将其绑定到特定的控制器.直到今天我才意识到这没有任何意义,因为用于回答此调用的控制器将成为控制器呈现视图的完全不同的对象.