2010-08-19 14 views
5

Tengo un form_for formulario, y dentro de él, estoy usando un formulario helper. El modelo tiene un campo que tiene un valor booleano, pero me gustaría poder mostrarlo en mi formulario en términos de su conversión, ya que creo que es más fácil de entender para los usuarios.Ruby on Rails: use form_for en un modelo, y voltee el valor del formulario

¿Hay alguna forma de que un ayudante de formulario Rails actúe como si el campo booleano del modelo se volteara?

Ejemplo:

<% form_for :user do |form| %> 
    <%= form.check_box :privacy_disabled %> 
<% end %> 

En este ejemplo, el modelo de usuario tiene un campo booleano privacy_disabled. Me gustaría mostrar esto en el formulario como marca aquí para habilitar privacidad.

La función auxiliar de casilla de verificación tiene la capacidad de establecer sus valores marcados y no comprobados, pero la inversión de estos no parece llenar correctamente la casilla de verificación con el valor guardado previamente.

Respuesta

9

Esta es la forma en que terminó la solución de este problema, en realidad estaba cerca de mi primer intento:

<%= form.check_box :privacy_disabled, 
        {:checked => [email protected]_disabled}, 
        0, 
        1 %> 

Así que los valores devueltos por la casilla de verificación se da la vuelta, y si se comienza comprobado es volteado manualmente bien.

6
No

la solución más elegante, pero que podría ser algo como lo siguiente:

  1. Añadir estos métodos a su modelo de usuario:

    def privacy_enabled=(val) 
        self.privacy_disabled = val == "0" 
    end 
    def privacy_enabled 
        !privacy_disabled 
    end 
    
  2. Cambie el formulario a:

    <%= form.check_box :privacy_enabled %> 
    

De nuevo, no es elegante, pero funciona.

+0

Esta es una buena solución; es fácil de leer y comprender por todos lados, y se puede mover fácilmente a un código específico de vista cuando sea necesario. –

Cuestiones relacionadas