ruby on rails - tag - Botones de radio en los rieles
radio button rails (5)
Similar a esta pregunta: casillas de verificación en rieles
¿Cuál es la forma correcta de hacer botones de radio que están relacionados con una determinada pregunta en Ruby on Rails? Por el momento tengo:
<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>
También quiero poder verificar automáticamente los elementos seleccionados previamente (si este formulario se volvió a cargar). ¿Cómo cargaría los parámetros en el valor predeterminado de estos?
Como en esta publicación anterior , con un ligero giro:
<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>
Dónde
@theme = params[:theme]
Hmm, de los documentos no veo cómo se puede establecer la ID en los botones de radio ... la etiqueta de atributo intenta vincularse a la ID en la radio.
documentación de rieles para radio_button_tag
Dicho esto, del documento, ese primer parámetro es el "nombre" ... que si eso es lo que está creando, debería agruparlos a todos. Si no, tal vez es un error?
Hmm, me pregunto si estos han sido arreglados: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353
Igual que V, pero tiene etiquetas asociadas con cada botón de radio. Al hacer clic en la etiqueta, se comprueba el botón de radio.
<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>
Sugeriría echar un vistazo a formtastic
Hace que las colecciones de botones de opción y casillas de verificación sean mucho más fáciles y concisas. Tu código se vería así:
<% 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 es en gran medida discreto y se puede mezclar y combinar con los constructores de formas "clásicos". También puede anular la clase formtastic css para el formulario como hice anteriormente con
:html => {:class => ''my_style''}
Echa un vistazo a los Railscasts pertinentes.
Actualización: Recientemente me he mudado a Simple Form, que tiene una sintaxis similar a formtastic pero es más liviana y sobre todo deja el estilo a tu propio css.
Usando Haml, eliminando las etiquetas br innecesarias y anidando las entradas dentro de la etiqueta para que puedan ser seleccionadas sin etiquetas coincidentes con los identificadores. También usando form_for. Consideraría que esto está siguiendo las mejores prácticas.
= 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