Rails 3: клиент-сторона_validations драгоценный камень и разработать проверки пароля - PullRequest
6 голосов
/ 16 мая 2011

У меня драгоценный камень client_side_validations отлично работает на моих формах. Я использую Devise для своей модели пользователей, и когда я перехожу к форме edit_user_registration, проверки вызываются для всего, кроме полей: current_password,: password и: password_confirmation.

Экземпляр форта: я оставляю письмо пустым, проверка появляется сразу, когда я выхожу из поля. Однако, если я оставляю поле current_password пустым и вкладка из него ничего не происходит, то при отправке формы я получаю ошибку «1 ошибка, запрещающая сохранение этого пользователя: пароль не может быть пустым»

Спасибо за любую помощь

http://pastie.org/1907464

Ответы [ 3 ]

14 голосов
/ 18 мая 2011

В настоящее время ClientSideValidations отфильтровывает любые условные валидаторы.Devise устанавливает некоторые из валидаторов как условные: https://github.com/plataformatec/devise/blob/master/lib/devise/models/validatable.rb#L24-32

Причина, по которой я это сделал, заключается в том, что у клиента нет хорошего способа определить истинное значение этого условного выражения.Я мог бы сделать это во время генерации формы, но что, если это условие основано на значении, которое можно изменить в форме?Поэтому я решил отфильтровать их и позволить вещам вернуться к серверу.

Это была идея, но она явно накладывала несправедливые ограничения на некоторые вещи.Это самое очевидное (и популярное).

Поэтому я планирую выпустить новую версию очень скоро, которая позволит вам явно переопределить условные фильтры.Это будет работать так:

<%= f.text_field :password, :validate => { :presence => true, :confirmation => true } %>

или

<%= f.text_field :password, :validate => true %>

В первом случае вы можете выбрать, какие валидаторы отключить фильтр.Во втором случае он отключит фильтр для всех валидаторов этого атрибута.Условие будет оценено во время создания формы, и, если она пройдет, она добавит валидатор в элемент ввода для использования на клиенте.

4 голосов
/ 20 мая 2011

Теперь главная ветвь поддерживает этот формат.Направьте свой Gemfile на него, и вы должны быть хороши

0 голосов
/ 11 ноября 2012

Все просто! Gem расширяет построитель форм Rails по умолчанию, и все, что вам нужно сделать, это установить параметр: validate => true для любого тега form_for (или simple_form_for для пользователей простых форм), для которого вы хотите встроенные проверки. Конструктор форм использует рефлексы на валидации вашей модели для генерации некоторого json, который включается в тег скрипта после вашей формы. Затем json используется платформой Javascript в геме для выполнения проверок, которые необходимо выполнить.

<%= form_for(@user, :url => registration_path(resource_name), :validate => true) do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...