8

在RoR 3中,我只想要一个链接/按钮来激活控制器中的某些动作/方法。具体来说,如果我点击页面上的'update_specs'链接,它应该转到我的产品控制器中的'update_specs'方法。我发现建议,要做到这一点上这个网站:Rails 3链接或按钮,在控制器中执行动作

link_to "Update Specs", :controller => :products, :action => :update_specs 

不过,我得到以下路由错误,当我点击此链接:

路由错误的路由匹配{:动作=> “update_specs”, :控制器=>“产品”}

我已经阅读了关于路由,但我不明白为什么我应该有路由这种方法,如果所有其他方法通过访问这些资源:产品。

+0

您需要路由此方法,因为您的操作无法通过使用'resources'生成器生成的标准REST路由访问。 – MBO

回答

14

您需要为其创建路线。

例如:

resources :products do 
    put :update_specs, :on => :collection 
end 

此外,默认情况link_to将查找在你的路由的GET方法。如果你想处理一个POSTPUT方法,你需要通过添加{:method => :post }{:method => :put }作为参数,如指定它:

link_to "Update Specs", {:controller => :products, :action => :update_specs}, {:method => :put } 

或者你可以使用button_to代替link_to它默认处理POST方法。

相关问题