私の質問はRails 5 API POST Create params emptyとよく似ていますが、回答が役に立たない。 Paramsは設定されていますが、要求ペイロードは失われています。Rails 5作成アクションのPOSTに空のパラメータがあります
[1] pry(#<Api::RegistrationsController>)> params
=> <ActionController::Parameters {"format"=>"json", "controller"=>"api/registrations", "action"=>"create"} permitted: false>
[2] pry(#<Api::RegistrationsController>)> params.require(:data)
ActionController::ParameterMissing: param is missing or the value is empty: data
リクエストヘッダ
Host: test.lvh.me:3000
Connection: keep-alive
Content-Length: 1038
Accept: application/vnd.api+json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Origin: http://test.lvh.me:4200
Content-Type: application/vnd.api+json
Referer: http://test.lvh.me:4200/register/individual-academics
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
生ペイロード
{"data":{"attributes":{"first-name":"Test","last-name":"User","email":"[email protected]"}}}
更新 私はRailsの4を使用して、同じアプリを設定した場合、これは変更なしで完璧に動作しますペイロードには、それはように見えるこれは、Rails 5が要求を処理する方法と関係していますか?
アップデート2 ActiveSupport::JSON.decode(request.body.string)
は正しくハッシュに解析しますが、のparamsに含まれていません。私は確かにparams.mergeをすることができます!しかし、これは悪い呼び出しのように感じる。
request.formatは次のとおりです。この問題を解決するために#<Mime::Type:0x007f89b6c63df0 @hash=2978300210816280263, @string="application/json", @symbol=:json, @synonyms=["text/x-json", "application/jsonrequest"]>
質問に答えを入れないでください。スタックオーバーフローはフォーラムではありません。あなたは答えを自己回答に入れることができます。実際、あなたはすでにそうしていました。質問にそれを入れても何も追加されない – Justin