【Rails】radio_buttonとlabelタグのfor属性を適切に設定する

【Rails】radio_buttonとlabelタグのfor属性を適切に設定する

Railsでラジオボタンを出力することがあります。

<%= f.radio_button(:gender, "男性") %> 男性
<%= f.radio_button(:gender, "女性") %> 女性

それと併せてlabel要素も設定するケースが多いと思います。

<%= f.radio_button(:gender, "男性") %>
<%= f.label(:gender, "男性")  %>
<%= f.radio_button(:gender, "女性") %>
<%= f.label(:gender, "女性") %>

しかし、これでは label のfor属性が適切に設定されません。
そこで、label メソッドのvalueオプションを使用します。

<%= f.radio_button(:gender, "男性") %>
<%= f.label(:gender, "男性", value: "男性")  %>
<%= f.radio_button(:gender, "女性") %>
<%= f.label(:gender, "女性", value: "女性") %>

この情報はRailsドキュメントには記載がないので、ご注意を。

label – リファレンス – – Railsドキュメント 

※ちなみにRails本体のソースコードにはしっかりとコメントがありました。

label(:post, :privacy, "Public Post", value: "public")
# => <label for="post_privacy_public">Public Post</label>

rails/form_helper.rb – rails/rails

【Rails】radio_buttonとlabelタグのfor属性を適切に設定する

更新情報はTwitterでも配信しています