我对路由和Rails的整个后端非常不熟悉。我试图点击"编辑购物车"通向编辑页面,我有edit_cart_path和相应的视图 - 但是当我点击编辑购物车按钮时,我得到了
Routing Error
No route matches [POST] "/carts/21/edit"
我有资源:在routes.rb推车,我得到" / carts /:id / edit" => "#推车编辑"同样。尝试了其他一些方法,包括" via:get"。为什么坚持POST,以及如何解决这个问题?
答案 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。