先日、新しいrails 5 --api --database = postgresqlアプリケーションを生成し、足場(Hero)を1つ作成しました。Rails 5 API Strong Parametersの振る舞い
def create
hero = Hero.new(hero_params)
if hero.save
render json: hero, status: :created, location: hero
else
render json: hero.errors, status: :unprocessable_entity
end
end
マイhero_paramsは次のようになります。:
コントローラは次のようになります。
def hero_params
params.require(:hero).permit(:name)
end
をだから私は希望私はいくつかの奇妙な行動を見ていて、強力なパラメータは、レールにどのように動作するか私は思ったんだけどクライアントが"hero"
キーを含むハッシュを提出する必要があり、このコントローラアクションが呼び出されたときに一括割り当てが許可される"name
"サブキーを持つことが許可されているとします。
意味、JSONは次のようになります。
{
"hero": {
"name": "test"
}
}
すべてが順調ですが、ここで私は奇妙な行動を見ていところです。ユーザーは単に送信する場合今
Parameters: {"hero"=>{"name"=>"test"}}
:
{ "name": "test" }
それはまだ新しいリソースを作成し、パラメータとしてでてくるユーザーは、上記のように正確なJSONを送信すると、パラメータがようで来ます:パラメータの二組、実際の送信されたデータとの一方とのフォーマットの一つがある理由
Parameters: {"name"=>"test", "hero"=>{"name"=>"test"}}
あたかもマス課題を予期していたかのように主人公を狙っている?
require(:hero)
は、キーが送信されないとエラーを発生させません。私はこの答えがあるため、自動的に、これは必要最小限のレールの動作ですように、第2のハッシュ("hero"=>{"name"=>"test"}}
1.質問から
は、私がここで行方不明です何上の任意の情報を大幅に、理解されるであろうと作成されたものであると仮定しOUT- 。の-ボックス
ユーザーが両方のパラメータを送信したようです。 '{name:" test "、英雄:{name:"テスト "}}'。これは可能ですか? – messanjah
いいえ、私はユーザーであり、私はPOSTMANを通じて要求を送信しています。両方の例が別々に送られました。 –