Ruby on Rails5でアプリを制作しています。
JavaScriptで生成した配列をDBに保存したいのですが、ストロングパラメーターを上手く設定することができません。
以下は簡単な例としてあげています。(この例ならこんなやり方をしなくていいだろうと思うかもしれませんが、実際はもっと複雑でして、、)
js
1user_array = [{name: "Taro", age: 21}, {name: "Hanako", age: 26}] 2$.ajax({ 3 url: '/users', 4 type: 'POST', //→userのcreateアクション 5 contentType: 'application/json', 6 data: JSON.stringify({ 7 user_array: user_array 8 }) 9}); 10 11//これにより、Parameters: {"user_array"=>[{"name"=>"Taro", "age"=>21}, {"name"=>"Hanako", "age"=>26}]}という形でURLパラメータが送られます
ruby
1def create 2 user_params[:user_array].each do |user| 3 User.create(name: user[:name], age: user[:age]) 4 end 5end 6 7private 8user_params 9 params.permit(:user_array) 10end
このようにuser_paramsというストロングパラメータを設定すると、
Unpermitted parameters: user_array
というエラーが発生します。
ストロングパラメータを設定しなければ、下記で問題なく動作します。
ruby
1def create 2 params[:user_array].each do |user| 3 User.create(name: user[:name], age: user[:age]) 4 end 5end
おそらく、JSON形式でパラメータを送ると、ストロングパラメータの設定の仕方が通常と異なるのではないかと思っています。
どのような記述をすればよいのか、ご教授願います。
2/25 18:50 誤字がありましたので修正しました!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。