2

我正在将客户端验证 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
4

1 回答 1

2

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

事实证明,如果表单是隐藏的,则 ClientSideValidation gem 不起作用。函数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();

这里

于 2013-08-06T12:27:06.203 回答