Rails 3链接或按钮,在控制器中执行动作
问题描述:
在RoR 3中,我只想要一个链接/按钮来激活控制器中的某些动作/方法。具体来说,如果我点击页面上的'update_specs'链接,它应该转到我的产品控制器中的'update_specs'方法。我发现建议,要做到这一点上这个网站:Rails 3链接或按钮,在控制器中执行动作
link_to "Update Specs", :controller => :products, :action => :update_specs
不过,我得到以下路由错误,当我点击此链接:
路由错误的路由匹配{:动作=> “update_specs”, :控制器=>“产品”}
我已经阅读了关于路由,但我不明白为什么我应该有路由这种方法,如果所有其他方法通过访问这些资源:产品。
答
您需要为其创建路线。
例如:
resources :products do
put :update_specs, :on => :collection
end
此外,默认情况link_to
将查找在你的路由的GET
方法。如果你想处理一个POST
或PUT
方法,你需要通过添加{:method => :post }
或{:method => :put }
作为参数,如指定它:
link_to "Update Specs", {:controller => :products, :action => :update_specs}, {:method => :put }
或者你可以使用button_to
代替link_to
它默认处理POST
方法。
您需要路由此方法,因为您的操作无法通过使用'resources'生成器生成的标准REST路由访问。 – MBO