LoginSignup
75
42

More than 5 years have passed since last update.

Rails5 Strong Parametersで複数の配列を許可する

Posted at

はじめに

環境は以下

  • Ruby 2.4.0
  • Rails 5系

formから渡ってくるデータを一部配列で受けわたしている部分が複数あった。
やりたいこととしては、フォームから渡ってくるデータで複数箇所の配列を許可したかった
コントローラーのStrong Parametersに以下のような記述の仕方をするとUnpermittedとなって詰まったのでメモ

def hoge_params
  params.permit(:name, hobbies: [], :pref, hoges: [], :text)
end

上記のような形であるとエラーが出た。

解決方法

Strong Parametersで配列データを扱う時、該当の配列は一番最後に記述しなければいけないというルールがあるらしい(情報ソースはどこか忘れてしまいました)

なので、以下のように書くと許可出来る。

def hoge_params
  params.permit(:name, :pref, :text, hobbies: [])
end

とすると、配列データを許可することが出来ました。
ここまでは、Web上の記事で解決出来たのですが、複数の配列データをやりたかったので、その場合は以下のようにします。

def hoge_params
  params.permit(:name, :pref, :text, hobbies: [], hoges: [])
end

結論

Strong Parametersで配列を扱いたい時は、配列をStrong Parametersの最後にまとめて記述する

75
42
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
75
42