2012-03-31 57 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