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

时间:2014-01-10 23:38:01

标签: ruby-on-rails forms put

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

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

但如果我检查元素,表格没有方法&#34; put&#34;但仍然&#34;发布&#34;?

<form accept-charset="UTF-8" action="/admin/stores/1/information/social_update" class="form-horizontal" enctype="multipart/form-data" method="post">
 ....
</form>

为什么???

3 个答案:

答案 0 :(得分:19)

根据the docs

  

如果使用“patch”,“put”,“delete”或其他动词,则会添加一个名为_method的隐藏输入来模拟帖子上的动词。

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

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

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

答案 1 :(得分:0)

  

Rails框架鼓励对应用程序进行RESTful设计,这意味着您将进行大量“PATCH”和“DELETE”请求(除了“GET”和“POST”)。但是,在提交表单时,大多数浏览器不支持“GET”和“POST”以外的方法。

因此,使用POST而不是PUT是完全可以的。

Reference

答案 2 :(得分:-1)

尝试输入

:method => 'get'

当您检查元素时,应该执行技巧和显示。