2016-05-27 2 views
0

Я использую Rails 4.2.3. В моем кофе сценарий, я вручную редактировать URL и действия формы, чтобы быть вот так ...Как использовать мой кофейник для изменения метода формы в PUT/PATCH?

# Alter the form submit behavior 
    $('#new_my_object').attr("action", "/my_objects/" + id) 
    $('#new_my_object').attr("method", "patch") 

Но я представить свою форму (нажав на кнопку отправки моей ...)

<%= button_to "Save", { :action => "create" }, :method => :post, :class => 'button' %> 

Запрос (как на Mac Chrome, так и на Firefox) отправляется с методом = «GET» вместо того, к чему я его изменил. Что мне нужно сделать, чтобы я мог подать через метод PATCH? (Мне нужно сделать это, потому что это то, что требуется для моего действия по обновлению).

ответ

0

method на <form> элементов может быть только get или post, не put или patch. См. <form> on MDN.

Как правило, вы должны ограничивать себя запросами GET и POST при работе с браузерами по этой причине, хотя это поддерживается при использовании XHR.

+0

Если вы говорите правду, то как Rails передает формы? В моем файле config/routes.rb я определил «resources: my_objects», что подразумевает обновления «/ my_objects /: id», для этого требуется метод «PUT/PATCH», по крайней мере, согласно документации Rails, которую я читаю , – Dave

+0

@Dave Вы можете указать ['_method = patch'] (http://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-patch-put-or-delete-methods-work-questionmark) как параметр формы в запросе POST, чтобы обойти ограничение. – univerio

Смежные вопросы