как установить метод put in form tag в rails?

Как установить метод внутри формы, чтобы поместить form_tag в rails? я form_tag такой :

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

но если я проверяю элемент, форма не имеет метода "put", но все же"post"?

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

почему???

3 ответов


по данным документы:

если используется" patch"," put"," delete " или другой глагол, для имитации глагола над post добавляется скрытый ввод с именем _method.

поэтому следующий код выведет следующую разметку:

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

это в основном обратно совместимый способ реализации PUT протокол между браузерами. Хотя метод отправки формы POST из-за скрытых форма ввода, Rails понимает, что желаемый метод представления должен быть PUT.


Rails framework поощряет спокойный дизайн ваших приложений, что означает, что вы будете делать много запросов "патч" и "удалить" (кроме "GET" и "POST"). Однако большинство браузеров не поддерживают методы, отличные от" GET "и" POST", Когда дело доходит до отправки форм.

Итак, совершенно нормально иметь POST вместо PUT.

ссылка


попробуйте ввести

:method => 'get'

Это должно сделать трюк и отобразить get при проверке элемента.