如何使创建和更新使用相同的路由

时间:2017-06-03 20:45:55

标签: ruby-on-rails

我的路线和表格如下:

<%= form_for @address, url: {action: "update_contact", controller: "checkouts"}, html: {class: ""} do |f| %>

我的路线如下:

post "checkouts/:cart_token/update_contact" => "checkouts#update_contact", as: "checkouts_update_contact"

对于更新,表单正在查找我尚未定义的PATCH,因此当@address模型已存在(即更新)时出现错误

无论如何,我如何让我的表格始终发布?

1 个答案:

答案 0 :(得分:3)

添加method: :post

<%= form_for @address, 
    url: {action: "update_contact", controller: "checkouts"}, 
    html: {class: ""}, 
    method: :post do |f| %>

如果没有,Rails会添加一个隐藏字段,用于在使用表单更新对象时伪造PATCH请求。

<input type="hidden" name="_method" value="patch" />