2012-02-22 18 views
9

que tengo en un formulario (form_tag) varias casillas de verificación de este tipo:Rails 3: cómo guardar las casillas de verificación (no) marcadas?

<%=check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false)%> 

y actualización gustan:

variable = ModelName.find(params[:id])    
variable.update_attributes(params[:model_name]) 

Esto funciona sólo en un momento, cuando reviso algunas casillas de verificación - enviar ellos y ellos serán salvados. Esta bien. Pero cuando desmarque todas las casillas - enviar el formulario - por lo que nada acaecer, en la tabla de base de datos no se fijará el valor en las columnas ...

¿Me podría dar ningún consejo, cómo solucionarlo?

gracias de antemano

Respuesta

20

Esto sucede porque una casilla sin marcar no enviará ningún valor al servidor. Para sortear este rieles proporciona el ayudante check_box, que genera código como este:

<input type="hidden" name="model[attr]" value="0" /> 
<input type="checkbox" name="model[attr]" value="1" /> 

Alternativamente, inserte un campo oculto con hidden_field_tag:

<%= hidden_field_tag 'model_name[column_name]', '0' %> 
<%= check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false) %> 
+0

gracias, pero la entrada oculta debe ser antes de que la casilla de verificación, en la secuencia al escribirla no me funciona – user984621

+0

Este método funciona, pero para mí tengo '<% = hidden_field_tag ​​'model_name [column_name]'%>' y almacena un conjunto vacío de comillas al principio de la matriz. ¿Cómo me deshago de las cotizaciones vacías adicionales? – Gcap

Cuestiones relacionadas