2017-03-24 5 views
0

私の質問は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"]>

+0

質問に答えを入れないでください。スタックオーバーフローはフォーラムではありません。あなたは答えを自己回答に入れることができます。実際、あなたはすでにそうしていました。質問にそれを入れても何も追加されない – Justin

答えて

1

、あなたはconfig/initializers/mime_types.rbに次の行を追加する必要があります。

Mime::Type.register "application/vnd.api+json", :json 
関連する問題