我正在使用client_side_validation gem在我的应用中进行js验证。我正在使用simple_form版本。
我的权限模型中有一个布尔属性,经过验证
class Permission < ActiveRecord::Base
validates :local, :regional, :national, :inclusion => {:in => [true, false]}
end
但是在视图中,它们被渲染为复选框,其值为1或0,因此它们永远不会被标记为已验证。
有什么想法吗?
答案 0 :(得分:0)
您必须为复选框设置:validate => false
。 E.g。
<%= simple_form_for @permission, :validate => true do |f| %>
<%= f.input :name, :label => 'Name' %>
<%= f.label :local %>
<%= f.check_box :local, :validate => false %>
<%= f.label :national %>
<%= f.check_box :regional, :validate => false %>
<%= f.label :regional %>
<%= f.check_box :national, :validate => false %>
<%= f.button :submit %>
<% end %>
由于复选框的定义为true或false,因此客户端验证不是必需的。通过服务器端验证,您仍然可以防止有人试图恶意提交非布尔值。