1日1%成長するブログ

毎日成長するために仕事/プライベートで得た学びをアウトプットするブログです

Railsのフォームで配列とハッシュを併用する

ハッシュだけ、配列だけの書き方は色んな所で書かれているが、 併用した書き方がなかなか見つからず困った。

古いが以下の記事が一通りまとまっていてわかりやすかった。

Rails のフォームで配列形式のデータを扱う方法 - WebOS Goodies

ハッシュのみ

HTML

<input type="text name="user[name]" />

params

user => {
  name: 'Taro'
}

ストロングパラメータ

params.require(:user).permit(:name)

配列のみ

HTML

<input type="text name="name[]" />

params

name => ['Taro', 'Ichiro']

ストロングパラメータ

params.permit(name: [])
  • 配列を許可する時は空配列を指定する

www.techscore.com

ハッシュの配列

HTML

<input type="text name="users[][name]" />

params

users => [
   { name: 'Taro' },
   { name: 'Ichiro' },
]

ストロングパラメータ

params.permit(users: [:name])

http://j-caw.co.jp/blog/?p=1590

Strongパラメータの意味

ruby-rails.hatenadiary.com

リクエストの内容をそのまま使ってDBを更新すると管理者の状態でユーザー登録できたりと脆弱性をうむので、 Rails4から更新するパラメータのみ許可することになった。ストロングパラメータを使っていないとエラーになる。

requireを使う意味がわかったようなわからないような... 複数のエンティティを同時に送る時には便利そうだが。