2010-11-06 6 views
22

Je suis actuellement en train d'essayer d'insérer quelques simples boutons radio vrai/faux dans Rails 3, mais je ne trouve pas un moyen de rendre un bouton radio "faux".Boutons radio pour le champ booléen, comment faire un "faux"?

Mon code est le suivant:

<%= f.radio_button :accident_free, true %><label for="auction_accident_free_true">ja</label> 
<%= f.radio_button :accident_free, false %><label for="auction_accident_free_false">nein</label> 

J'ai déjà essayé:

  • 1/0
  • "1"/"0"
  • true/false
  • " vrai "/" faux "
  • " oui "/" non "

mais rien ne semble fonctionner correctement pour la valeur false. Mon champ est défini avec

validates_presence_of :accident_free 

et je reçois toujours le message qu'il doit être rempli de continuer, en cliquant sur le bouton faux. Lorsque vous cliquez sur le bouton true, cela fonctionne correctement, mais false n'est pas reconnu.

Est-ce que quelqu'un sait comment le faire correctement?

Merci à l'avance

Arne

Répondre

50

voici:

http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_presence_of

validates_presence_of() vérifie que les attributs spécifiés ne sont pas vides (tel que défini par l'objet # vide?)

Si vous voulez valider la presenc e d'un champ booléen (où les valeurs réelles sont vraies et fausses), vous voudrez utiliser validates_inclusion_of :field_name, :in => [true, false]

Ceci est dû à la façon dont l'objet # est vide? poignées valeurs booléennes: false.blank? # => true

J'ai essayé votre exemple à l'aide d'un échafaudage et "1" et "0" comme dans

<%= f.radio_button :foo, "0" %> 
<%= f.radio_button :foo, "1" %> 

et ils ont travaillé.

+1

Hey, merci beaucoup, qui fonctionne vraiment :) Je suis toujours fasciné comment les gens rapidement à stackoverflow sont avec répondre à ces des questions. Je l'ai maintenant fonctionné grâce à vous! – arnekolja

+7

Encore un commentaire: cela fonctionne encore avec "true"/"false", car les radio_buttons sont correctement présélectionnés quand la validation échoue. – arnekolja

+0

Excelent, merci. De plus j'ai inclus un message plus clair pour ma validation de champ de bouton radio: # validates_inclusion_of: field_name, dans: [true, false], message: 'choisissez une option' –

2

Je suis récemment venu à une autre solution pour cela:

validates_presence_of :accident_free, :if => 'accident_free.nil?' 

Explication here

+0

Ce qui précède fonctionne bien.Assurez-vous simplement que votre colonne/champ n'a pas de valeur par défaut définie. –

Questions connexes