1. ホーム
  2. ruby-on-rails

[解決済み] rails フォームのラジオボタンにラベルを付ける

2022-04-29 18:50:18

質問

私の質問は、以下のようなものです。 これ が、Railsアプリの場合。

私はいくつかのラジオボタンを持つフォームを持っており、それらにラベルを関連付けたいと考えています。その label フォームヘルパーはパラメータとしてフォームフィールドを受け取るだけですが、この場合、1つのフォームフィールドに対して複数のラジオボタンがあります。唯一の方法は、手動でラベルを作成し、ラジオボタンのために自動生成されたIDをハードコーディングすることです。どなたか良い方法をご存知でしょうか?

例えば

<% form_for(@message) do |f| %>
    <%= label :contactmethod %>
    <%= f.radio_button :contactmethod, 'email', :checked => true %> Email
    <%= f.radio_button :contactmethod, 'sms' %> SMS
<% end %>

というようなものが生成されます。

<label for="message_contactmethod">Contactmethod</label>
<input checked="checked" id="message_contactmethod_email" name="message[contactmethod]" value="email" type="radio"> Email
<input id="message_contactmethod_sms" name="message[contactmethod]" value="sms" type="radio"> SMS

欲しいもの

<input checked="checked" id="message_contactmethod_email" name="message[contactmethod]" value="email" type="radio"><label for="message_contactmethod_email">Email</label>
<input id="message_contactmethod_sms" name="message[contactmethod]" value="sms" type="radio"> <label for="message_contactmethod_sms">SMS</label>

解決方法は?

<% form_for(@message) do |f| %>
  <%= f.radio_button :contactmethod, 'email', :checked => true %> 
  <%= label :contactmethod_email, 'Email' %>
  <%= f.radio_button :contactmethod, 'sms' %>
  <%= label :contactmethod_sms, 'SMS' %>
<% end %>