最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

client

旗下网站admin37浏览0评论

client

client

client_side_validation gem - 布尔值作为复选框(client_side_validation gem - boolean as check boxes)

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

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

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

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

有任何想法吗?

I'm using the client_side_validation gem to do js validations in my app. I'm using the simple_form version.

I've got a boolean attributes in my permission model which are validated

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

However in the view they are rendered as checkboxes, which have value of either 1 or 0, so they are never marked as validated.

Any ideas?

最满意答案

您必须为复选框设置:validate => false 。 例如

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

You will have to set :validate => false for checkboxes. 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 %>

As checkboxes are by definition true or false, client side validation is not really necessary. With your server-side validation, you are still protected from someone trying to maliciously submit non-boolean values.

发布评论

评论列表(0)

  1. 暂无评论