我们有这样的形式:
<%= 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>
当我以:put
为method
时,我会以这种形式获得这样的隐藏字段
<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="✓" />
<input type="hidden" name="_method" value="put" />
对于某些对象,该代码正在按预期提交给更新操作,但对于某些对象,它作为邮政请求。这是铁轨中的错误吗?还是我缺少的东西?
并非所有支持put
或patch
的浏览器。Rails用_method
字段解决了此问题。Rails具有一个机架中间件,当表格发送_method=put
时,将HTTP POST
重写为HTTP PUT
。如果您在轨道控制台上查看您可以收到put
/update
请求的内容。