Question

Semblable à cette question: Cases à cocher sur les rails

Quelle est la bonne façon de créer des boutons radio liés à une question donnée dans Ruby on Rails? Pour le moment, j'ai:

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

Je souhaite également pouvoir vérifier automatiquement les éléments précédemment sélectionnés (si ce formulaire a été rechargé). Comment charger les paramètres dans la valeur par défaut de ceux-ci?

Était-ce utile?

La solution

Comme dans cet article précédent , légèrement modifié:

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

Autres conseils

Identique à V, mais des étiquettes sont associées à chaque bouton radio. Cliquez sur l'étiquette pour activer le bouton 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>

Utilisation de Haml, élimination des balises br inutiles et imbrication des entrées dans les libellés afin qu’elles puissent être sélectionnées sans faire correspondre les libellés aux identifiants. Également en utilisant form_for. Je considérerais que cela suit les meilleures pratiques.

= 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

Je suggérerais de consulter formtastic

.

Les collections de boutons radio et de cases à cocher sont considérablement simplifiées et concises. Votre code ressemblerait à ceci:

    <% 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 est en grande partie discret et peut être mélangé et assorti avec le "classique" constructeurs de formulaire. Vous pouvez également remplacer la classe css formtastic pour le formulaire comme je l'ai fait ci-dessus avec
    : html = > {: class = > 'mon_style'}

Consultez les diffusions Rails pertinentes.

Mise à jour: j'ai récemment migré vers le formulaire simple dont la syntaxe est similaire à formtastic mais est plus léger et laisse surtout le style à votre propre css.

Hmm, dans la documentation, je ne vois pas comment vous pouvez définir l'ID sur les boutons radio ... l'attribut de l'étiquette pour tente de faire le lien avec l'ID de la radio.

documentation sur rails pour radio_button_tag

Cela dit, d'après le document, ce premier paramètre est le "nom" ... qui, si c'est ce qu'il est en train de créer, devrait les regrouper. Si non, peut-être que c'est un bug?

Hmm, je me demande si ces problèmes ont été corrigés: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top