2010-11-06 16 views
22

Actualmente estoy tratando de insertar algunos botones simples de radio verdadero/falso en Rails 3, pero no puedo encontrar la manera de hacer que un botón de radio inserte "falso".Botones de radio para el campo booleano, ¿cómo hacer un "falso"?

Mi código es el siguiente:

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

Ya he probado:

  • 1/0
  • "1"/"0"
  • verdadero/falso
  • " verdadero "/" falso "
  • " sí "/" no "

pero nada parece funcionar bien para el valor falso. Mi campo se establece con

validates_presence_of :accident_free 

y siempre me sale el mensaje de que tiene que ser llenado para continuar, al hacer clic en el botón falsa. Al hacer clic en el botón verdadero, funciona bien, pero falso no se reconoce.

¿Alguien sabe cómo hacerlo correctamente?

Gracias de antemano

Arne

Respuesta

50

esto es él:

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

validates_presence_of() valida que los atributos especificados no están en blanco (como se define por objeto # blanco?)

Si desea validar la presenc e de un campo booleano (donde los valores reales son verdaderos y falsos), querrá usar validates_inclusion_of :field_name, :in => [true, false]

Esto se debe a la forma Objeto # en blanco? maneja valores booleanos: false.blank? # => true

me trataron su ejemplo usando un andamio y "1" y "0" como en

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

y trabajaron.

+1

Hey, muchas gracias, que realmente funciona :) Siempre me fascina lo rápido que las personas en stackoverflow son con responder a tales preguntas Lo tengo trabajando ahora gracias a ti! – arnekolja

+7

Un comentario más: funciona con "verdadero"/"falso" aún mejor, ya que los radio_buttons se preseleccionan correctamente cuando falla la validación. – arnekolja

+0

Excelente, gracias. Además, incluí un mensaje más claro para la validación de mi campo de botones de radio: # validates_inclusion_of: field_name, en: [true, false], mensaje: 'choose an option' –

2

Recientemente me encontré con otra solución para esto:

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

Explicación here

+0

Lo anterior funciona bien.Solo asegúrese de que su columna/campo no tenga un valor predeterminado definido. –

Cuestiones relacionadas