2012-03-31 56 views
0

它在以前的rails版本中工作。我找不到解決方案。驗證複選框在Rails 3.2中不起作用

#Model 

    validate :branches_cannot_be_empty 

    def branches_cannot_be_empty 
     errors.add(:branches, "can't be empty") if branches.blank? 
    end 

    #View HAML 
    .field.checkbox 
    = f.label(:branch, "Assign to Branch") 
    -if @march.branch_ids.include? (branch.id) 
     =check_box_tag "branches[#{branch.id}]", 1, true 
    -else 
     =check_box_tag "branches[#{branch.id}]" 
    = branch.name 

回答

3

您無法驗證這樣一個複選框 - 在一個軌道的形式(以及大多數其他框架,例如.NET Web窗體)始終發送值回一個複選框。

當您呈現複選框時,隱藏字段也會呈現爲false值。所以如果複選框被選中,你會得到一個真值,但如果複選框沒有被選中,你會得到false值不爲空。

請閱讀rail文檔的gotcha部分 - >http://apidock.com/rails/ActionView/Helpers/FormHelper/check_box