Rails4使ってて、checkboxで複数のチェックをArrayで受け取る方法
HTML側 (1行目と5行目は関係ない)
<input type="number" name="num">個数
<input type="checkbox" name="gadgets[]" value="iPhone">アイフォン
<input type="checkbox" name="gadgets[]" value="Android">アンドロイド
<input type="checkbox" name="gadgets[]" value="WindowsPhone">ウィンドウズフォン
<input type="text" name="hoge">ほげ
Controller側
gadget_params = params.permit(:num, {:gadgets => []}, :hoge)
これでgadget_paramsは{"name"=>"2", "gadgets"=>["iPhone", "Android"], "hoge"=>"fuga"}
みたいになる。
ポイントは
- HTML側でチェックボックスのnameに
[]
をつける。こうするとRailsが配列として扱ってくれる - StrongParametersのpermitで配列であることを明示する。