2011-06-09 6 views
0

J'ai quatre boutons radio comme suit: -bouton de réglage radio = contrôlé du contrôleur

<%= radio_button_tag ch,@choices[0].id %><%= label_tag :cid, @choices[0].Option %> 
<%= radio_button_tag ch,@choices[1].id %><%= label_tag :cid, @choices[1].Option %> 
<%= radio_button_tag ch,@choices[2].id %><%= label_tag :cid, @choices[2].Option %> 
<%= radio_button_tag ch,@choices[3].id %><%= label_tag :cid, @choices[3].Option %> 

Je veux mettre un des RadioButton à vérifier sur la base @choices [1] .id. Comment puis-je le faire depuis le contrôleur?

Répondre

0

Ce n'est pas vraiment une réponse à votre question, mais parce que vous n'avez pas eu d'autres réponses, je vais vous en parler. D'abord, la plupart des gens ne feraient pas ce que vous faites. Deuxièmement, cela n'a aucun sens de vouloir faire exactement ce que vous demandez. C'est à dire. pour définir le bouton radio en fonction de la valeur de @choices[1].id. Peut-être que vous vouliez dire quelque chose comme "la valeur de @choice.id"?

Quoi qu'il en soit, revenez à "First" - comment la plupart des gens le feraient?

La plupart des gens utiliseraient l'assistant radio_button, pas l'assistant radio_button_tag. Alors comment le faites vous? Eh bien ce dont vous avez besoin de votre contrôleur est un seul objet que vous appellerez une méthode pour obtenir/définir l'une des valeurs que vous avez dans votre groupe radio. Généralement, il s'agit d'un objet modèle qui a une association belongs_to avec un autre modèle. Comme vous pourriez avoir:

class Customer < ActiveRecord::Base 

    belongs_to :contact_method 

end 

Vous allez leur permettre de choisir qui ContactMethod qu'ils veulent utiliser, donc en supposant que vous avez un ensemble @customer dans votre contrôleur, vos boutons radio seraient comme ceci:

<% ContactMethod.all.each do |cm| %> 
    <%= radio_button :customer, :contact_method_id, cm.id %> 
    <%= label :customer, :contact_method_id, cm.name, :value => cm.id %> 
<% end -%> 

cela va créer autant de boutons radio que vous avez ContactMethod s et il marquera automatiquement un comme cochée si @customer.contact_method a une valeur qui correspond à l'un de ces ContactMethod s

+0

Mise à jour pour utiliser le '* _i d' des versions des méthodes. – smathy