Pregunta

Similar a esta pregunta: Casillas de verificación en los rieles

¿Cuál es la forma correcta de crear botones de radio 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 fue recargado). ¿Cómo cargaría los parámetros en el valor predeterminado de estos?

¿Fue útil?

Solución

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>

Donde

@theme = params[:theme]

Otros consejos

Igual que V's, pero tiene etiquetas asociadas con cada botón de opción. Al hacer clic en la etiqueta, se marca el botón de opción.

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

Usar Haml, deshacerse de etiquetas br innecesarias y anidar entradas dentro de la etiqueta para que puedan seleccionarse sin que coincidan las etiquetas con las ID. También usando form_for. Consideraría que esto sigue 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

Sugeriría echar un vistazo a formtastic

Hace que las colecciones de botones de radio 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 bastante discreto y se puede mezclar y combinar con el " clásico " formadores de formularios. También puede anular la clase css formtastic para el formulario como lo hice anteriormente con
    : html = > {: class = > 'my_style'}

Eche un vistazo a los Railscasts pertinentes.

Actualización: Recientemente me mudé a Formulario simple que tiene una sintaxis similar a Formtastic, pero es más ligero y, sobre todo, deja el estilo a tu propio CSS.

Hmm, en los documentos no veo cómo se puede establecer la ID en los botones de radio ... la etiqueta para el atributo intenta vincular a la ID en la radio.

documentos de rails para radio_button_tag

Dicho esto, desde el documento, ese primer parámetro es el " nombre " ... que si eso es lo que está creando, debería agruparlos por completo. Si no, tal vez sea un error?

Hmm, me pregunto si se han solucionado: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top