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/[email protected]" /><</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

person rigelstpierre    schedule 02.06.2013    source источник
comment
У вас есть эта строка //= require rails.validations в вашем файле app\assets\javascripts\application.js?   -  person andreofthecape    schedule 05.06.2013


Ответы (1)


У меня была похожая проблема: никаких ошибок в JS-консоли, она просто не работала — ни валидации, ни сообщения, ничего. Я мог бы временно заставить его работать, если бы я вызывал $('form').enableClientSideValidations() или $('form[data-validate]').validate(); вручную из консоли JS.

Оказалось, что гем ClientSideValidation не работает. если форма скрыта. Функции resetClientSideValidations() или enableClientSideValidations() необходимо вызывать после того, как форма станет видимой. Если они вызываются раньше, когда форма еще скрыта, они не действуют.

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

Другими причинами, по которым гем не работает, являются конфликты версий. Пробовали ли вы обновлять гем, запускать генераторы с rails g client_side_validations:copy_assets и добавлять ссылки на javascript в ваш application.js?

Если это динамическая форма, можно попробовать

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

см. здесь

person 0x4a6f4672    schedule 06.08.2013