【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

五十川 洋平(Yohei Isokawa)

五十川 洋平(Yohei Isokawa)

フロントエンドエンジニア/面白法人カヤックなどのWeb制作会社に勤務したのち、故郷の新潟に戻り独立。JSフレームワークAngularやFirebase、Google Cloud Platformを使ったWebアプリ開発が得意。 また、Udemyのプログラミング解説の講師、writer-app.comの自主開発や上越TechMeetupの主催などを行っています。

プロフィール