没有路由匹配POST混淆

时间:2014-08-26 03:00:03

标签: ruby-on-rails ruby

我对路由和Rails的整个后端非常不熟悉。我试图点击"编辑购物车"通向编辑页面,我有edit_cart_path和相应的视图 - 但是当我点击编辑购物车按钮时,我得到了

Routing Error
No route matches [POST] "/carts/21/edit"

我有资源:在routes.rb推车,我得到" / carts /:id / edit" => "#推车编辑"同样。尝试了其他一些方法,包括" via:get"。为什么坚持POST,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

我猜你在做这样的事情,在你看来:

button_to(edit_cart_path(@cart))

使用button_to助手时,默认的HTTP方法是POST。

您必须明确定义要执行的HTTP方法:

button_to(edit_cart_path(@cart), method: :get)

我建议您改用link_to助手,并使用CSS添加任何按钮效果:

link_to(edit_cart_path(@cart), class: 'btn')

从Rails 4文档:

  

button_to(name,options = {},html_options = {})

     

options hash接受与url_for相同的选项。

     

有一些特殊的html_options:

     

:method - HTTP动词的符号。支持的动词有:post,:get,   :删除和:放。 默认情况下为:post。