2016-05-27 3 views
0

Ich verwende Rails 4.2.3. In meinem Kaffee-Skript, ich bearbeite ich die URL manuell und Wirkung einer Form wie so ...Wie verwende ich mein coffeescript, um die Formularmethode in PUT/PATCH zu ändern?

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

Aber ich meine Form (durch Klicken auf meiner Submit-Button ...)

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

Die Anfrage (sowohl auf Mac Chrome als auch auf Firefox) wird mit method = "GET" anstatt mit dem, was ich geändert habe, gesendet. Was muss ich tun, damit ich über eine PATCH-Methode senden kann? (Ich muss dies tun, da dies für meine Aktualisierungsaktion erforderlich ist).

Antwort

0

method auf <form> Elemente können nur get oder post, nicht put oder patch sein. Siehe <form> on MDN.

Im Allgemeinen sollten Sie sich aus diesem Grund auf GET- und POST-Anfragen beschränken, wenn Sie mit Browsern arbeiten, obwohl dies bei Verwendung von XHR unterstützt wird.

+0

Wenn das, was Sie sagen, wahr ist, wie übermittelt Rails dann Formulare? In meiner config/routes.rb-Datei habe ich "resources: my_objects" definiert, was bedeutet, dass Updates für "/ my_objects /: id" eine "PUT/PATCH" -Methode erfordern, zumindest entsprechend der Rails-Dokumentation, die ich lese . – Dave

+0

@Dave Sie können angeben ['_method = patch'] (http://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-patch-put-oder-delete-methods-work-questionmark) als Formular-Parameter für eine POST-Anfrage, um die Einschränkung zu umgehen. – univerio

Verwandte Themen