この質問に似ています: Checkboxes on Rails
Ruby on Railsの特定の質問に関連するラジオボタンを作成する正しい方法は何ですか?
<div class="form_row">
<label for="theme">Theme:</label>
<br><%= radio_button_tag 'theme', 'plain', true %> Plain
<br><%= radio_button_tag 'theme', 'desert' %> Desert
<br><%= radio_button_tag 'theme', 'green' %> Green
<br><%= radio_button_tag 'theme', 'corporate' %> Corporate
<br><%= radio_button_tag 'theme', 'funky' %> Funky
</div>
また、以前に選択したアイテムを自動的にチェックできるようにしたい(このフォームが再ロードされた場合)。これらのデフォルト値にパラメータをロードするにはどうすればよいですか?
この前の投稿 のように、わずかなひねりを加えて:
<div class="form_row">
<label for="theme">Theme:</label>
<% [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme| %>
<br><%= radio_button_tag 'theme', theme, @theme == theme %>
<%= theme.humanize %>
<% end %>
</div>
どこで
@theme = params[:theme]
Vと同じですが、各ラジオボタンにラベルが関連付けられています。ラベルをクリックすると、ラジオボタンがチェックされます。
<div class="form_row">
<p>Theme:</p>
<% [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme| %>
<br><%= radio_button_tag 'theme', theme, @theme == theme %>
<%= label_tag "theme_#{theme}", theme.humanize %>
<% end %>
</div>
Hamlを使用し、不要なbrタグを取り除き、ラベル内の入力をネストして、ラベルをIDと一致させずに選択できるようにします。また、form_forを使用します。これはベストプラクティスに従っていると思います。
= form_for current_user do |form|
.form_row
%label Theme:
- [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme|
%label
= form.radio_button(:theme, theme)
= theme.humanize
formtastic をご覧になることをお勧めします
ラジオボタンとチェックボックスのコレクションを非常に簡単かつ簡潔にします。コードは次のようになります。
<% semantic_form_for @widget, :html => {:class => 'my_style'} do |f| %>
<%= f.input :theme, :as => :radio, :label => "Theme:",
:collection => [ 'plain', 'desert', 'green', 'corporate', 'funky' ] %>
<% end %>
Formtasticはほとんど目立たず、「クラシック」フォームビルダーと組み合わせて使用できます。上記で行ったように、フォームのformtastic cssクラスをオーバーライドすることもできます:html => {:class => 'my_style'}
関連するRailscastをご覧ください。
更新:最近、 Simple Form に移行しました。これは、formtasticと同様の構文を持ちますが、より軽量で、特にスタイルを独自のcssに残します。
うーん、ドキュメントから、ラジオボタンにIDを設定する方法がわかりません...ラベルの属性はラジオのIDにリンクしようとします。
それは、ドキュメントから、その最初のパラメータは「名前」です...それが作成しているものであれば、shouldそれらを一緒にグループ化します。そうでない場合は、おそらくバグですか?
うーん、これらが修正されたかどうか疑問に思います: http://dev.rubyonrails.org/ticket/2879http://dev.rubyonrails.org/ticket/335