2012-07-03 48 views
1

我試圖設置窗體上的複選框的默認值,以便它將爲true,除非用戶取消選中它。通常情況下,我可能只是設置:選中屬性爲true的複選框rails中check_box的默認值,使用失敗的驗證?

f.check_box :send_emails, :checked => true

但是,如果表格上驗證失敗,用戶選中的複選框,將再次進行檢查時,「新」行動被重新呈現。即使重新呈現時用戶對象的值確實爲false,因爲我已將該「checked」屬性設置爲true,它將忽略該值。

要解決這個問題,我把這個控制器的興田新動作 @user.send_emails ||= true

看起來很醜,所以我在尋找一個差異的方法。任何人都有不同的東西?

回答

1

您可以在遷移中將默認值:send_emails設置爲true

下面是一個例子,產生一個遷移改變字段的默認值:

class AddDefaultTrueToSendEmails < ActiveRecord::Migration 
    def change 
    change_column_default(:users, :send_emails, true) 
    end 
end