Rails 3链接或在控制器中执行操作的按钮

时间:2011-09-26 17:07:32

标签: ruby-on-rails model-view-controller controller rails-routing

在RoR 3中,我只想拥有一个链接/按钮来激活控制器中的某些动作/方法。具体来说,如果我点击页面上的“update_specs”链接,它应该转到我的产品控制器中的“update_specs”方法。我已在此网站上找到了建议:

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

但是,当我点击此链接时出现以下路由错误:

  

路由错误没有路由匹配{:action =>“update_specs”,   :控制器=> “中的产品”}

我已经阅读了路由但我不明白为什么如果可以通过资源访问所有其他方法,我必须路由此方法:产品。

1 个答案:

答案 0 :(得分: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