2010-02-07 11 views
5

Tengo una migración que usa un valor booleano y genera una casilla de verificación en su vista. Sin embargo, no importa en qué clic, el valor guardado en la base de datos no se ve afectado.Ruby on Rails: ¿casilla de verificación no guardada en la base de datos?

Mi migración se ve así:

def self.up 
    create_table :blogposts do |t| 
     t.string :title 
     t.text :body 
     t.boolean :allow_comments, :default => false 
     t.references :author 
     t.references :lasteditor 
     t.timestamps 
    end 
    end 

Mi punto de vista es el siguiente:

<% semantic_form_for([:controlpanel, @blogpost]) do |form| %> 
<%= form.error_messages %> 
<% form.inputs do %> 
<%= form.input :title %> 
<%= form.input :body %> 
<%= form.input :allow_comments %> 
<% end %> 
<%= form.buttons %> 

que produce el código HTML siguiente:

<li class="boolean required" id="blogpost_allow_comments_input"> 
<label for="blogpost_allow_comments"> 
<input id="blogpost_allow_comments" name="blogpost[allow_comments]" type="checkbox" value="1" /> 
<input name="blogpost[allow_comments]" type="hidden" value="0" />Allow comments 
<abbr title="required">*</abbr> 
</label> 
</li> 

El controlador es sólo el predeterminado generado por el andamio.

Si configuro el valor predeterminado en la migración, ese valor siempre se guarda en la base de datos. Si no configuro un valor predeterminado, siempre es NULO.

¿Alguien puede sugerir una solución, sugerencia sobre lo que podría estar yendo mal?

Cualquier consejo apreciado.

Gracias.

Respuesta

1

Intente utilizar form_for en lugar de semantic_form_for y reemplazar <%= form.input :allow_comments %> con <%= form.check_box_field :allow_comments %>

+0

Hola, no hace ninguna diferencia – Dan

14

Doh, me había olvidado de establecer attr_accessible en el modelo.

+2

Cometí el mismo error. Gracias. :) –

+1

¡Una más, con el mismo error! – workdreamer

Cuestiones relacionadas