Frage

, wenn ich dies tun:

curl -X POST -H 'Content-type: application/xml' -d '<person>...</person>' 'http://0.0.0.0:3000/people/12?_method=PUT'

ich „nur bekommen, setzen und Anfragen erlaubt sind zu löschen.“ Warum? Rails 2.3.2

War es hilfreich?

Lösung 2

Dies ist tatsächlich eine Fehlfunktion in Schienen neueren Versionen. Die Lösung ist die HTTP-Methode überschreiben Header mit Put passieren. Wichtig: der vollständige Name des Headers ist http-x-http-Methode-Überschreibung, aber Schienen fügen den http-Präfix, so dass Sie, dass ein Teil trimmen sollten.

Andere Tipps

luca korrekt ist, müssen Sie den X-Http-Methode-Aufschalten Header mit Ihrer Anfrage senden. Putting _method = in der JSON Körper funktionierte nicht für mich. Ihre curl Befehlszeile wie folgt aussehen:

 curl
  -H "X-Http-Method-Override: put"
  -H "Content-Type: application/json"
  -d "{\"user\":{\"email\":\"blah@example.com\"}}"
  www.site.com/users/username.json

Es gibt ein paar Dinge, die schief gehen könnten.

Zunächst einmal, du bist ein POST mit curl zu senden, aber Sie haben die „Magie“ _method Parameter auf Ihrer URL bekam, und es ist auf PUT. Basierend auf dem Fehler, es klingt wie Rails ist POST als maßgeblicher Anforderungstyp nehmen. Versuchen Sie es, ohne dass und sehen, was passiert.

Auf einem Fußgänger Fehler, das Routing (in config/routes.rb konfiguriert werden könnte, um nicht POST Ersuchen für die Aktion können Sie versuchen, zu verwenden.

Wenn Sie einen Standard RESTful-Controller verwenden, die guten Sinn macht, weil Sie Mitglied sind zugreift (/people/12), die standardmäßig nur erlaubt GET, PUT und DELETE.

Ich würde versuchen, curl -X PUT verwenden und die ?_method=PUT aus Ihrer Anfrage fallen zu lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top