客户端验证宝石不起作用

时间:2013-06-02 21:48:51

标签: ruby-on-rails ruby client-side-validation

我正在即将推出的页面上使用客户端验证gem作为表单,无论我做了什么,我都无法通过表单来显示验证。

这是表格

<%= form_for @user, :remote => true, :validate => true do |f| %>
  <% @user.errors.full_messages.each do |msg| %>
      <p><%= msg %></p>
    <% end %>

  <%= f.text_field :username, :placeholder => "Username" %>
  <%= f.email_field :email, :placeholder => "Email" %>
  <button class="btnSmall" type="submit" name="commit" type="submit" value="Create User"><img  src="/assets/arrowWhite.png" alt="Submit Credentials" /></button>

  <button class="btnLarge" type="submit" name="submit">Submit<img class="arrowWhite1x" src="/assets/arrowMobileWhite.png" alt="Submit Credentials" /><img class="arrowWhite2x" src="/assets/arrowMobileWhite@2x.png" /><</button>

<% end %>

我正在加载通过AJAX发送表单,所以我也通过JS加载验证

$(document).ready ->
  $('#new_user').enableClientSideValidations()

这是我的模特

class User < ActiveRecord::Base
  attr_accessible :email, :username

  validates_uniqueness_of :username, :email
  validates :email, :email_format => true
end

1 个答案:

答案 0 :(得分:2)

我遇到了类似的问题:JS控制台没有错误,它根本不起作用 - 没有验证,没有消息,没有。如果我从JS控制台手动调用$('form').enableClientSideValidations()$('form[data-validate]').validate();,我可以暂时让它工作。

原来是ClientSideValidation gem does not work if the form is hidden。在表单可见之后,必须将函数resetClientSideValidations()enableClientSideValidations()称为。如果之前调用它们,当表单仍然隐藏时,它们就没有效果。

$('form').enableClientSideValidations();  # works only if form visible

gem不起作用的其他原因是版本冲突,您是否尝试更新gems,使用rails g client_side_validations:copy_assets运行生成器,以及将javascript引用添加到application.js?

如果是动态表单,可以尝试

$('form[data-validate]').validate();

请参阅here