はじめに
環境は以下
- 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の最後にまとめて記述する