14

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

home/autocomplete_category_name 

,现在需要有家庭删除和路径从:

home_autocomplete_category_name_path 

到:

autocomplete_category_name_path 

有人有什么想法吗?还在学习Rails的细节,所以现在对我来说这是一个死胡同。

谢谢。

+0

最好是发布相关路线的当前RoR实际代码以及您的目标网址。 – jschorr 2011-01-24 03:44:00

+0

此外,通过在根项目目录中的控制台键入`rake routes`来包含您当前的路线。 – raidfive 2011-01-24 07:56:25

回答

9

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

您需要将呼叫转移到另一个控制器的autocomplete。表单的位置应该没有什么区别,只要您在定义您的时候通过了正确的路径text_field

+0

我已经完成了完全按照你所说的,这不是一个雄辩的解决方案,但它确实工作,谢谢! – 2011-01-25 00:02:59

+3

如果你想要的话,可以路由到ApplicationController - 仅仅反对约定 – Pavling 2013-03-21 17:18:19

0

尝试像

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

旧帖子,但接受的答案是错误的。虽然它的精神是正确的 - 你应该将你的方法转移到更合适的控制器上;但如果你对具有application_controller.rb

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

...将路由方法在application_controller.rb的“some_route”的方法坚持

6

另一个死灵但是还有一个更干友好的方式来做到这一点,比起pavling的解决方案

get :autocomplete_category_name, controller:"application" 

我试图(昨天)将其移动到应用程序控制器,试图更好,而不是重用代码将其绑定到特定的控制器。直到今天,我才意识到这是没有道理的,因为用来回答这个调用的控制器将是一个完全不同的对象,无论如何渲染视图的控制器..

1

使用Rails 4,你必须使用get,not匹配...

# routes.rb 
get '/autocomplete_category_name', to: 'application#autocomplete_category_name', as: :autocomplete_category_name 
相关问题