【问题标题】:Rails 3 link or button that executes action in controller在控制器中执行操作的 Rails 3 链接或按钮
【发布时间】:2011-11-25 09:27:53
【问题描述】:

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

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

但是,当我单击此链接时,我收到以下路由错误:

路由错误没有路由匹配 {:action=>"update_specs", :controller=>"产品"}

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

【问题讨论】:

  • 您需要路由此方法,因为您的操作无法通过resources generator 生成的标准 REST 路由访问。

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


【解决方案1】:

你需要为它创建一个路由。

例如:

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 代替默认处理POST 方法的link_to

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多