【Rails】チェックボックスがオフ状態でも値を送信する方法
チェックボックスでbooleanを送るときにチェックBOXがオフ状態でもパラメータを送信するようにする必要がある話です。
はじめに
仕組みとしては value=0
のhiddenのinputを作成してデフォルトで送信するようにします。
もし、チェックされなければ、hiddenの値が送信されてチェックされた場合は2行目のinputが上書きます。
<input name="hoge[fuga]" type="hidden" value="0" /> <input class="custom-checkbox" type="checkbox" value="1" name="hoge[fuga]" />
解決策
実はRailsのフォームビルダーを使えばよしなにやってくれるのですが、ちょっと余計なことをして手間取りました。
Good
= f.check_box :fuga, { class:"custom-checkbox" }
↓
<input name="hoge[fuga]" type="hidden" value="0" /> <input class="custom-checkbox" type="checkbox" value="1" name="hoge[fuga]" />
Bad
= f.check_box :opened, { class:"custom-checkbox }, true, false
↓
これだとだめですね
<input class="custom-checkbox" type="checkbox" value="1" name="hoge[fuga]" /> = f.check_box :fuga, { class:"custom-checkbox" }
valueを渡す場合は文字列にしないと
= f.check_box :fuga, { class:"custom-checkbox }, "true", "false"
参考
ActionView::Helpers::FormBuilder
便利!