Mit HTTP PUT JSON mit Jquery and Rails 3 senden

HTTP PUT ist nicht vollständig browserübergreifend, daher unterstützt Rails (ich verwende Rails 3) die Verwendung von POST und die Übergabe des_method query param. Das ist großartig, scheint aber beim Senden von JSON nicht zu funktionieren.

Beispiel

$.ajax({
    url: window.location.pathname,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({_method:'PUT', page:{my_data: 1}),
    dataType: 'json'
});

Wenn Rails dies sieht, wird die Überschreibung '_method' nicht erkannt, da sie im JSON-Format übergeben wird (möglicherweise erfolgt die Konvertierung später?). Rails gibt den Fehler "Keine Routenübereinstimmungen ..." zurück, der besagt, dass die Route (zur Ressource) nicht gefunden werden kann. Ich gehe davon aus, dass sie nicht mit dem Verb REST update = HTTP PUT übereinstimmt. Ich habe sogar versucht, dies anzufügen die URL:?_method=PUT aber habe das gleiche Ergebnis.

Das einzige, das does scheint zu funktionieren setzt einen HTTP-Header:

$.ajax({
    url: window.location.pathname,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({my_data: 1}),
    dataType: 'json',
    beforeSend: function(xhr){
        xhr.setRequestHeader("X-Http-Method-Override","put");
    }
});

Ist das Setzen des HTTP-Override-Headers der beste Weg?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage