59

この質問に似ています:レール上のチェックボックス

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>

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

4

5 に答える 5

76

この前の投稿のように、少しひねりを加えて:

<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]
于 2009-03-08T06:03:02.110 に答える
41

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>
于 2009-07-25T06:20:00.160 に答える
4

私は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を見てください。

更新: 私は最近、formtastic と同様の構文を持つSimple Formに移行しましたが、より軽量で、特にスタイリングは独自の CSS に任せます。

于 2010-06-11T20:53:49.053 に答える
1

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

radio_button_tag の Rails ドキュメント

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

うーん、これらは修正されているのでしょうか: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353

于 2009-03-08T05:14:20.230 に答える