Railsのラジオボタン
-
05-07-2019 - |
質問
この質問に類似:チェックボックス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
ラジオボタンとチェックボックスのコレクションを非常に簡単かつ簡潔にします。コードは次のようになります。
<% 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 =&gt; {:class =&gt; 'my_style'}
関連するRailscastをご覧ください。
更新:最近シンプルフォームに移動しました。 formtasticですが、より軽量で、特にスタイルを独自のcssに任せます。
うーん、ドキュメントからは、ラジオボタンにIDを設定する方法がわかりません...属性のラベルはラジオのIDにリンクしようとします。
それは、ドキュメントから、最初のパラメータは「名前」です...それが作成するものである場合、それらを一緒にグループ化する必要があります そうでない場合、おそらくバグですか?
うーん、これらは修正されているのでしょうか: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353