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

时间:2011-01-24 03:21:20

标签: ruby-on-rails ruby-on-rails-3 routes applicationcontroller

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

home/autocomplete_category_name

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

home_autocomplete_category_name_path

为:

autocomplete_category_name_path

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

感谢。

6 个答案:

答案 0 :(得分:29)

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

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

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

答案 1 :(得分:9)

网址不会直接映射到ApplicationController - 只是它的子类。

您需要将autocomplete的呼叫转移到另一个控制器。只要您在定义text_field

时传递正确的路径,表单的位置就不会产生任何影响

答案 2 :(得分:7)

与pavling的解决方案相比,还有一种更加干燥友好的方式来做到这一点

get :autocomplete_category_name, controller:"application"

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

答案 3 :(得分:1)

使用Rails 4,你必须使用get,而不是匹配......

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

答案 4 :(得分:0)

尝试类似

的内容
match "home/autocomplete_category_name", "home#autocomplete_category_name", :as => "autocomplete_category_name"

答案 5 :(得分:0)

在Rails 4中,使用:

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

你有' autocomplete_category_name_path'给你链接