我正在即将推出的页面上使用客户端验证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
答案 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