すみません。
簡潔にしたかったのですが、うまく短くできませんでした。
jsonで次をリクエストします。
{ "hoge_id": "fuga" } puts params paramsの中身はこちらです。 結果 #{"hoge_id => "fuga", "controller => users", "action" => "piyo", "user => {}" puts prams.require(:user).permit(:hoge_id) こんな感じで、requireメソッドを使いキーでしぼって、permitメソッドに渡したいのですが、エラーになります。 :userではなく、ほかの値を入れてもエラーになります。 結果 #<Action Controller:ParameterMissging: param is missing or the value is empty: user puts params.permit(:hoge_id) 結局、requireを使わず、permitで許可するキーを指定して、その値だけを使っています。 結果 # "hoge_id => "fuga" **paramsで値を取得する際にrequireを必ずしも使わなくもいいものなのでしょうか?** 僕の解釈では、キーを指定してそれ以外を受け取らないようにする目的だと思うのでいらないのではないかと思いました。 その代わり、permitでしっかりと受け取りたいものを指定しています。 試しに、users_controllerの中で{"name": "太郎"}をjsonでPOSTしてputs prams.require(:user).permit(:name)のようにするとuser => {"name": "太郎"}とちゃんとuserキーの中に値が格納されます。nameはusersテーブルにもともとあるカラムです。 hoge_idはusersテーブルにもともとないものなのでそこが異なっていると思うのですが、よくわかりませんでした。
このように、userをキーとしてjsonでリクエストすると、requireが使えるので、このように、jsonで送るのが正で、userキーをつけないのはよくないかもしれませんが、要望でuserキーを使わないことになっています。
{ "user": { "hoge_id": "fuga" } }
サンプルをネットで探しましたが、params.require(:user).permit(:name)のようなフォーマットしかなく、RailsGuideには
params.permit(:name)
のようにparamsから直接permitを呼んでいるものもあるのですが、これがよい使い方なのかがわかりませんでした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/19 03:44