Как регистрировать ошибки формы на странице входа с помощью Devise - PullRequest
4 голосов
/ 09 ноября 2010

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

Ответы [ 3 ]

1 голос
/ 17 декабря 2010

Функцию ошибок Devise по умолчанию для devise 1.1.5 можно найти в геме devise:

devise-1.1.5 / app / helpers / devise_helper.rb

module DeviseHelper
  def devise_error_messages!
    return "" if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
    sentence = "#{pluralize(resource.errors.count, "error")} prohibited this #{resource_name} from being saved:"

    html = <<-HTML
    <div id="error_explanation">
      <h2>#{sentence}</h2>
      <ul>#{messages}</ul>
    </div>
    HTML

    html.html_safe
  end
end

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

0 голосов
/ 22 августа 2011

Ошибки хранятся на карте:

resource.errors

Если ваше поле формы называется :email, вы можете получить связанную ошибку, такую ​​как:

resource.errors[:email]
0 голосов
/ 09 ноября 2010

В зависимости от вашей версии Rails (до 3 или нет), вы можете использовать:

<%= f.error_messages_for :model %>

Версия Rails до 3.0 использует этот код для обработки и форматирования ошибок. В Rails 3 этот метод стал устаревшим. Вам нужно установить этот плагин , чтобы использовать указанный выше код erb.

Подробнее об этом изменении можно прочитать в главе "Новые функции" this asciicast.

Это руководство охватывает весь процесс построения системы аутентификации на основе devise и cancan.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...