私は、Ramsful API(ActionController :: API)サービスを持っており、paramsのリストを受け取ります。 RESTfulサービスは、JSON本体リクエスト(Content-Typeがapplication/json)を受け取ります。私は(右のアクションdefの後に)コントローラ/アクションをデバッグするとのparamsリストにピークを取ると、次のように表示されます。それが渡されたとき すべての要求は(それに持ってRails 5 Params/Strong Params issue
<ActionController::Parameters {"given_name"=>"Mark", "subdomain"=>"development", "controller"=>"user", "action"=>"create", "user"=>{"given_name"=>"Mark"}} permitted: false>
EDITコントローラ/アクションに - POSTmanを使用して):
{"given_name":"Mark"}
このオブジェクトにはgiven_name paramsが2回含まれています。これは正常な動作ですか?私はコントローラ/アクションに "ユーザ"オブジェクト(jsonオブジェクト)を渡さなかったのですか?許可された旗は何ですか?
user = User.new(params)
私が手:
私は(今私はRESTfulな呼び出しをテストし、ユーザーオブジェクトが...何の検証がまだプログラムされていない除います任意の値を代入しています)を使用してみてください
エラー:??#<ActiveModel::ForbiddenAttributesError: ActiveModel::ForbiddenAttributesError>
だから、私はこの背後にある理由のためにどこでも見てきました(理由のparamsリストで「ユーザー」キーがあるなぜ私がエラーを取得しています許可フラグの目的は何ですか私がparamsを割り当てようとすると)?
EDIT
いくつかのテストを行った後、私はルートは名前を変更し、コントローラを指すように「tester_controller」と設定に「user_controller」からコントローラ名を変更します。
上記のparamsリストの "user"オブジェクトが "tester"に変更されたようです。では、なぜparamリストには、コントローラの名前を持つすべてのパラメータが渡された「オブジェクト」が含まれていますか?それが事実なら、それはなぜ必要なのですか?
ご協力いただければ幸いです。
'params [' user '] 'いいえ?このように、ユーザーの属性 'controller'または' action'を割り当てようとしているようです。 – LolWalid
要求がすべてそれに渡されるときに、{"given_name": "Mark"}です。しかし、アクションでは、私は上記のパラメータを取得します。 – Sean
したがって、私はコントローラを "user_controller"から "tester_controller"に変更しました。 "user" => {"given_name": "Mark"} "が" tester "=> {" given_name ":" Mark "}"に変更されたようです。なぜ、コントローラ名がparamsリストに追加された "オブジェクト"がありますか? – Sean