Esto funciona en Rails 2.3.x y Rails 3.0.x!
En acción nueva en el controlador, la casilla de verificación está establecida en verdadero.
# in the controller
def new
@user = Person.find(:first)
@user.active = true
end
En la forma: la casilla de verificación está marcada en la creación (por la llamada nueva), pero si falla la validación de la casilla de verificación permanece establecido con el valor que el usuario tiene puesto.
# in the view
<%= form_for ..... |f| %>
...
<%= f.check_box :active %>
...
<% end %>
Otra manera, pero no tan bueno (si desea cambiar la lógica de lo que tiene que hacer una nueva migración) es establecer : default => 1 en la migración del modelo dado y atributo.
class CreatePeople < ActiveRecord::Migration
def self.up
create_table :people do |t|
...
t.boolean :active, :null => false,
:default => 1
t.timestamps
end
end
def self.down
drop_table :people
end
end
No estoy leyendo valor check_box/escritura a la base de datos, por lo que el cambio a check_box_tag y con el interruptor cierto resolvió el problema. ¡Gracias! – daustin777
Los métodos _tag son para formularios que no son modelos. Los que no son _tag son. – wesgarrison
@wesgarrison Estoy usando un check_box_tag como este <% = check_box_tag "benificiary_id [# {b.id}]", b.id,: name => "benificiary_id []"%> aquí cómo verifico si algún registro revisado o no durante la actualización? de forma predeterminada, mi acción de actualización toma todos los valores de casilla de verificación, incluso si algunos de ellos no están marcados :( –