LoginSignup
0
1

More than 3 years have passed since last update.

selectタグで複数選択に変えたら、ストロングマラメーターによってパラメーターが排除されてしまった

Posted at

webサイトを作成中にselect_tagを複数選択に変えたら、 入力した値が排除されてしまい少しハマってしまったので同じミスをしないためにまとめます。

エラーが発生した状況

スクリーンショット 2019-11-29 0.19.10.png
上の写真のようにselect_tagを複数選択に変えたところ、これまで正常に登録ができていたにもかかわらず、登録できないエラーが発生した。
ログをみてみると、「Unpermitted parameter: :category_id」となっており、ストロングパラメータで弾かれ、paramsの値がnilになっていることが原因のようだった。
スクリーンショット 2019-11-29 0.20.07.png
コンソールでも確認してみたところnilになっている
スクリーンショット 2019-11-29 0.21.00.png

解決のために試したこと

ストロングパラメータを書いたコードをみて、paramsで指定した値の入力ミスがあるか確認。
しかし、タイポしているわけではなさそう。複数選択を解除すれば問題なく通ったため、複数選択が原因であることは間違えなさそう。
スクリーンショット 2019-11-29 0.18.41.png

複数選択の時と一つしか選択できない時のparamsに入っている値を確認してみる。
・一つ選択の時
スクリーンショット 2019-11-29 0.20.32.png
・複数選択の時(pryを使用してparamsの値を確認)
スクリーンショット 2019-11-29 0.20.47.png

確認してみると、複数選択の場合、値が配列になっていることからストロングパラメーターにもそれを追記しなければいけないのではと思い実行したら、うまく作動できた!
スクリーンショット 2019-11-29 12.54.48.png

params.require(:posting_thread_categories).permit(:category_id)
# 上記から以下に変更
params.require(:posting_thread_categories).permit(category_id: [])
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1