2016-03-08 118 views
0

我有我的導軌內的下列複選框字段組成:複選框:默認爲選中,如果數值未設置

<div class="form-group"> 
    <%= f.label :education, "Education Employee): " %> 
    <%= f.check_box :education%> 
</div> 

複選框默認爲未選中。我想讓它做的是默認檢查,除非值已經設置爲true/false。如果該值已設置爲true/false,則顯示該設置值的複選框值。換句話說:如果設置的值是nil那麼默認爲被檢查。

我嘗試這一點,但它並沒有爲我工作:

<div class="form-group"> 
    <%= f.label :education, "Education Employee: " %> 
    <%= f.check_box :education, checked: true if f.object.education.nil? %> 
</div> 

我沒有從checkbox documentation很多信息。

+0

爲什麼不將默認'true'添加到數據庫列?或者在初始化實例時設置默認值。 – spickermann

+0

@spickermann我可以添加一個數據庫約束,但我想看看我是否可以將它保留在應用程序級別。 – Neil

+0

@spickermann YES!謝謝!沒有想到在實例內初始化默認值。謝謝! – Neil

回答

2

我寧願在數據庫中設置一個默認值。但是當你想在應用程序級別保留這個 - 就像你在評論中寫的那樣 - 那麼你可以在初始化一個實例後設置默認值。

# in your model 
after_initialize :set_defaults 

private 
def set_defaults 
    self.education = true if education.nil? 
end 
0

也許更好的辦法是在初始遷移設置的默認值,如:

def change 
    add_column :model, :education, :boolean, default: true 
end 

或者,如果它是一個現有列:

def change 
    change_column_default :model, :education, true 
end 

我知道這是舊的文章但也許它會幫助未來的某人

相關問題