Działa to w Railsach 2.3.x i Railsach 3.0.x!
W akcji nowej w kontrole, pole wyboru jest ustawione na true.
# in the controller
def new
@user = Person.find(:first)
@user.active = true
end
w formie: pole wyboru jest zaznaczone na stworzenie (przez wywołanie nowy), ale jeśli uwierzytelnienie nie powiedzie pole wyboru jest ustawiony z wartością, że użytkownik ma posta.
# in the view
<%= form_for ..... |f| %>
...
<%= f.check_box :active %>
...
<% end %>
Innym sposobem, ale nie tak dobre (jeśli chcesz zmienić logikę trzeba zrobić nową migrację) jest ustawiony : default => 1 w migracji danego modelu i atrybut.
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
nie jestem zapisu/odczytu wartości check_box do DB, więc przejście na check_box_tag i korzystania prawdziwy przełącznik rozwiązało problem. Dzięki! – daustin777
Metody _tag są dla form niemodalnych. Te inne niż te. – wesgarrison
@wesgarrison Używam check_box_tag jak ten <% = check_box_tag "benificiary_id [# {b.id}]", b.id,: name => "benificiary_id []"%> tutaj, jak sprawdzić czy jakikolwiek rekord sprawdzone czy nie podczas aktualizacji? domyślnie moja akcja aktualizacji przyjmuje wszystkie wartości pola wyboru, nawet jeśli niektóre z nich są odznaczone :( –