web-dev-qa-db-ja.com

Railsのラジオボタン

この質問に似ています: 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>

また、以前に選択したアイテムを自動的にチェックできるようにしたい(このフォームが再ロードされた場合)。これらのデフォルト値にパラメータをロードするにはどうすればよいですか?

57
alamodey

この前の投稿 のように、わずかなひねりを加えて:

<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]
75
vladr

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>
37
dazonic

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
8
Daniel X Moore

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に残します。

4
dirkb

うーん、ドキュメントから、ラジオボタンにIDを設定する方法がわかりません...ラベルの属性はラジオのIDにリンクしようとします。

radio_button_tagのRailsドキュメント

それは、ドキュメントから、その最初のパラメータは「名前」です...それが作成しているものであれば、shouldそれらを一緒にグループ化します。そうでない場合は、おそらくバグですか?

うーん、これらが修正されたかどうか疑問に思います: http://dev.rubyonrails.org/ticket/2879http://dev.rubyonrails.org/ticket/335

1
scunliffe