我们有这样的形式:
<%= 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>
当我将method
作为:put
传递时,我会在表单
<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" />
对于某些对象,代码将按预期提交给更新操作,但对于某些对象,它将作为发布请求。这是rails中的错误吗?或者有什么我想念的东西?
答案 0 :(得分:4)
并非所有浏览器都支持put
或patch
。 Rails使用_method
字段解决了这个问题。 Rails有一个Rack Middleware,当表单发送HTTP POST
时,它会将HTTP PUT
重写为_method=put
。如果您查看Rails控制台,则可以收到put
/ update
请求。