レールのXMLリクエストに置くために、設定方法
-
12-09-2019 - |
質問
私はこれを行う場合:
curl -X POST -H 'Content-type: application/xml' -d '<person>...</person>' 'http://0.0.0.0:3000/people/12?_method=PUT'
私は "のみ、GET、PUT、および要求が許可されて削除します。" を取得しますどうして? Railsの2.3.2
解決 2
これは実際には、レールの最近のバージョンでは誤動作しています。溶液は、PUTとHTTPメソッドのオーバーライドヘッダーを通過させることです。重要:ヘッダーの完全な名前は、その部分をトリミングする必要がありますので、HTTP-X-HTTP-メソッドのオーバーライドが、レールのhttp接頭辞を追加しています。
他のヒント
ルカが正しい、あなたはあなたの要求でX-HTTP-Method-Overrideヘッダーを送信する必要があります。 JSONボディに入れて置く_methodは=私のために動作しませんでした。あなたのcurlコマンドラインは次のようになります。
curl
-H "X-Http-Method-Override: put"
-H "Content-Type: application/json"
-d "{\"user\":{\"email\":\"blah@example.com\"}}"
www.site.com/users/username.json
間違って行くことができ、物事のカップルがあります。
まず最初に、あなたはPOST
でcurl
を送っているが、あなたはあなたのURLの「魔法」_method
パラメータを持っている、そしてPUT
に設定しています。 Railsは権威要求タイプとしてPOST
を取っているようなエラーに基づいて、それが聞こえます。それなしでそれを試してみて、何が起こるか見ています。
より多くの歩行者のエラーで、config/routes.rb
におけるルーティングは(あなたが使用しようとしているアクションのためのPOST
要求を許可しないように構成することができます。
あなたは、デフォルトでのみ/people/12
、GET
、およびPUT
を可能にするメンバー(DELETE
)にアクセスしているので、良い理にかなっている標準のRESTfulなコントローラを、使用している場合。
私はcurl -X PUT
を使用し、あなたの要求から?_method=PUT
をドロップしようとするだろう。