在RoR 3中,我只想拥有一个链接/按钮来激活控制器中的某些动作/方法。具体来说,如果我点击页面上的“update_specs”链接,它应该转到我的产品控制器中的“update_specs”方法。我已在此网站上找到了建议:
link_to "Update Specs", :controller => :products, :action => :update_specs
但是,当我点击此链接时出现以下路由错误:
路由错误没有路由匹配{:action =>“update_specs”, :控制器=> “中的产品”}
我已经阅读了路由但我不明白为什么如果可以通过资源访问所有其他方法,我必须路由此方法:产品。
答案 0 :(得分:14)
您需要为其创建路线。
例如:
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
。