как установить метод 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.