text_field tag rails form_with form_for form collection ruby-on-rails ruby webforms radio-button

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]



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