它在之前的rails版本中有效。我无法找到解决方案。
#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
答案 0 :(得分:3)
你无法验证这样的复选框 - 以rails形式(以及大多数其他框架,例如.net web表单)总是为复选框发回一个值。
渲染复选框时,隐藏字段也会呈现为false。因此,如果选中该复选框,则会得到值true,但如果未选中复选框,则会得到false值而不是空白。
在这里阅读rails文档的gotcha部分 - > http://apidock.com/rails/ActionView/Helpers/FormHelper/check_box