f.labelを使ったラベルでチェックボックスをクリックできるようにする
フォームのinput要素でチェックボックスやラジオボタンはラベルタグと紐付けしておくと、ラベルをクリックしたときも対象のオンオフを切り替えすることができる。
紐つけ方はinputの方にid属性を付与して、labelの方にはforでそのidを指定してあげればOK
以下のような感じ。こうすれば「オプション1」という文字列をクリックしてもチェックが付く。
<input type="checkbox" id="order_option_1" />
<label for="order_option_1">オプション1</label>
これと同じことをrailsのform helperでもやりたいとき。
今までlabelだけは普通のlabelタグを使っていたけれど、以下のようにすればlabelもhelperで生成してinput要素と紐付けできることがわかった。
実はf.label
はvalue:
というオプションがあって、そこに指定した値がforを生成するときに使用される。
= f.checkbox :order_option, 1
= f.label :order_option, 'オプション1', value: 1
checkboxとかradio_buttonがid要素を作るときにvalueを利用するのは気づいていたけれど、まさかlabelもそうだとは思わなかった。
これでhelperで全て書けるようになったので少しうれしい。
labelタグで書いてもとくに変わらないけれど気持ちの問題。
この記事の環境情報
- Ruby on Rails 7.0.4
- 唇が乾燥中
railsに関する他の記事を読む
- omniauth-google-oauth2でscopeを追加するときはemailが必須だった
- google-api-clientを指定してinstallするのはもう非推奨になっていた
- OmniAuthでdeveloper providerを使ってダミーログインをする
- [Rails]取得したクラス名をキャメルケースからスネークケースに変換する
- urlヘルパーをモデルなどでも使う方法
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら