Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

環境は以下

  • 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の最後にまとめて記述する

sayama0402
Javascript(Riot.js / Vue / React / Nodejs) / PHP(Wordpress, cakePHP, Laravel) / Ruby(Ruby on Rails) / Python(Django) / SQL / Linux / Swift / Docker / AWS / Serverless
http://ken-sayama.hateblo.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away