Rails简单的表格put/patch请求时,请按照某些对象的帖子请求进行操作



我们有这样的形式:

<%= simple_form_for(@venue, url: url, method: method) do |f| %>
 <%= render  "shared/errors", object: venue%>
  <div class="row">
    <div class="col-md-12">
      <div class="form-group label-floating">
        <%= f.association :partner, input_html: { class: "form-control", value: partner.try(:id)  }, label_html: { class: 'control-label' } %>
      </div>
    </div>
  </div>
<div class="row">
  <div class="col-md-12">
    <div class="form-group label-floating">
      <%= f.input :name, input_html: { class: "form-control"  }, label_html: { class: 'control-label' } %>
    </div>
  </div>
</div>
<div class="row">
  <div class="col-md-12">
    <div class="form-group label-floating">
      <%= f.input :description, required: true,label: 'About', input_html: { class: "form-control", rows: 5 }, label_html: { class: 'control-label' }  %>
    </div>
  </div>
</div>

当我以:putmethod时,我会以这种形式获得这样的隐藏字段

<form novalidate="novalidate" class="simple_form edit_venue" id="edit_venue_19" action="/admin/venues/19" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" />
  <input type="hidden" name="_method" value="put" />

对于某些对象,该代码正在按预期提交给更新操作,但对于某些对象,它作为邮政请求。这是铁轨中的错误吗?还是我缺少的东西?

并非所有支持putpatch的浏览器。Rails用_method字段解决了此问题。Rails具有一个机架中间件,当表格发送_method=put时,将HTTP POST重写为HTTP PUT。如果您在轨道控制台上查看您可以收到put/update请求的内容。

最新更新