client_side_validation gem - 布尔值作为复选框

时间:2013-01-10 17:23:51

标签: javascript ruby-on-rails validation simple-form client-side-validation

我正在使用client_side_validation gem在我的应用中进行js验证。我正在使用simple_form版本。

我的权限模型中有一个布尔属性,经过验证

 class Permission < ActiveRecord::Base
   validates :local, :regional, :national, :inclusion => {:in => [true, false]}
 end

但是在视图中,它们被渲染为复选框,其值为1或0,因此它们永远不会被标记为已验证。

有什么想法吗?

1 个答案:

答案 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,因此客户端验证不是必需的。通过服务器端验证,您仍然可以防止有人试图恶意提交非布尔值。