Ruby on Rails
でフォームにラジオボタンを実装する方法についてのメモです。 boolean
の値を選択するラジオボタンとEnumerize
をラジオボタンの作成について記載します。
labelのfor属性を設定する箇所など、たまにわからなくなるので整理しておきます。
環境
- rbenv 1.1.2
- Ruby 2.7.0
- Rails 6.0.2.1
ラジオボタンの実装方法
Railsでのラジオボタンの実装は、フォームヘルパーのradio_button
メソッドを使います。
第一引数に、対称のメソッド名のシンボルを指定し、第二引数に、ラジオボタンの値を設定します。
一方、ラジオボタンに紐づくラベルの表示は、フォームへルパーのlabel
メソッドを使います。
このラベルのクリックに連動して、ラジオボタンにチェックを入れたい場合は、value
オプションの値に対応するラジオボタンのvalue値を設定します。
Boolean(true or false)を登録する場合
実際に、ラジオボタンを作成してみます。Boolean を選択する場合、以下のように実装します。
以下のような、HTMLが生成されます。
id=task_done_true
のラジオボタンに対応するlabel
のfor
属性を確認すると、task_done_true
が設定されていることで、ラベルをクリックした時に、ラジオボタンも連動しチェックが入ります。
これは、label
のvalue
オプションにtrueが設定されているためです。for
属性の値は、ここでは<モデル名>_<メソッド名>_<valueオプション値>
という形で生成されています。
Enumerizeを使った場合
Enumerize
を使う場合もほぼ同様です。
enumerizeを使う場合は、モデル名.メソッド.options
を使うと、以下のようなテキストと値のリストが取得できます。
i18n
を設定しているので、翻訳されたテキストが取得できます。
options
で項目名と値が取得できるので、これをループさせてラジオボタンを描画できます。
Booleanを描画するのと同様に、ラジオボタンに対応するfor
属性が設定されたラベルが描画されます。