simple_form删除方法而不是post方法

时间:2014-02-06 13:32:08

标签: ruby-on-rails simple-form

在simple_form中可以使用http delete动词而不是默认的post动词?

<%= simple_form_for @object , method: :delete do |f| %>
    <%= f.input :instance_name, as: :check_boxes, collection: @roles  %>
    <%= f.button :submit %>
<% end %>

它不起作用。

1 个答案:

答案 0 :(得分:14)

不幸只是声明它不起作用对理解你所看到的问题没有帮助,但我会根据自己最初对“method:”参数的混淆做出猜测。大多数浏览器不支持PUT和DELETE方法,因此simple_form_for所做的是使用POST方法生成表单,但它还添加了一个隐藏字段来传递实际方法。所以:

simple_form_for @service, url: service_path, method: :delete

产生

<form action="/services/6" method="post">
  <input name="_method" type="hidden" value="delete" />
....

Rails使用它来调用正确的控制器方法。希望有所帮助。