Boutons radio sur les rails

Similaire à cette question: cases à cocher sur les rails

Quelle est la bonne façon de créer des boutons radio liés à une question spécifique dans Ruby on Rails? En ce moment j’ai:


Plain
Desert
Green
Corporate
Funky

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 parameters dans leur valeur par défaut?

Comme dans ce post précédent , avec une légère torsion:

 
< % [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme| %>
< %= radio_button_tag 'theme', theme, @theme == theme %> < %= theme.humanize %> < % end %>

 @theme = params[:theme] 

Identique à V, mais a des étiquettes associées à chaque bouton radio. Cliquez sur l’étiquette pour vérifier le bouton radio.

 

Theme:

< % [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme| %>
< %= radio_button_tag 'theme', theme, @theme == theme %> < %= label_tag "theme_#{theme}", theme.humanize %> < % end %>

Utiliser Haml, se débarrasser des balises br inutiles et des entrées d’imbrication dans l’étiquette afin qu’elles puissent être sélectionnées sans faire correspondre les étiquettes aux identifiants. Utiliser également form_for. Je considère 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ère de jeter un oeil à formtastic

Cela rend les collections de boutons radio et de cases à cocher plus faciles et plus concises. Votre code devrait ressembler à 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 associé aux constructeurs de formulaires “classiques”. Vous pouvez également remplacer la classe CSS formtastic pour le formulaire comme je l’ai fait ci-dessus avec
:html => {:class => 'my_style'}

Jetez un coup d’œil sur les Railscasts pertinents.

Mise à jour: Je suis récemment passé à Simple Form qui a une syntaxe similaire à formtastic mais qui est plus légère et qui laisse le style à votre propre css.

Hmm, à partir des docs, je ne vois pas comment vous pouvez définir l’ID sur les boutons radio … l’atsortingbut du label essaie de créer un lien vers l’ID de la radio.

rails docs pour radio_button_tag

Cela dit, depuis le doc, ce premier paramètre est le “nom” … qui, si c’est ce qu’il crée, devrait les regrouper tous. Si non, c’est peut-être un bug?

Hmm, je me demande si ceux-ci ont été corrigés: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353