如何在rails中设置form_tag中的方法?

tar*_*djo 9 forms ruby-on-rails put

如何在form中设置方法以将form_tag放入rails?中,我有这样的form_tag:

<%= form_tag(url, :method => :put, :multipart => true, :class =>"form-horizontal") do %>
 ......
<% end %>
Run Code Online (Sandbox Code Playgroud)

但如果我检查元素,形式没有方法"放"但仍然"发布"?

<form accept-charset="UTF-8" action="/admin/stores/1/information/social_update" class="form-horizontal" enctype="multipart/form-data" method="post">
 ....
</form>
Run Code Online (Sandbox Code Playgroud)

为什么???

zea*_*soi 20

根据文件:

如果使用"patch","put","delete"或其他动词,则会添加名为_method的隐藏输入以模拟post上的动词.

因此,以下代码将输出以下标记:

form_tag('/posts/1', method: :put)
#=> <form action="/posts/1" method="post"> ... <input name="_method" type="hidden" value="put" /> ...
Run Code Online (Sandbox Code Playgroud)

这基本上是PUT跨浏览器实现协议的向后兼容方式.虽然表单的提交方法是POST,由于隐藏的表单输入,Rails了解所需的提交方法PUT.

  • 你真的读过我的任何答案吗?默认情况下,Rails添加一个隐藏的输入,指定该方法应该是一个"PUT"提交.因此,当`form`方法属性是`POST`时,Rails将提交处理为好像是'PUT`.这是为了适应旧版本的HTML,除了`GET`和`POST`方法之外什么都不支持. (4认同)