Выборочное отключение флеш-уведомлений Devise в Rails 3 - PullRequest
23 голосов
/ 12 марта 2011

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

Мне интересно, какой простой способ выборочно отключить некоторые уведомления Devise Flash в моем приложении Rails 3. В частности, я бы хотел избавиться от явно очевидных вспышек Sign_in и Sign_out.

В некоторых поисках предлагалось создать подклассы контроллера сессии или использовать что-то вроде этого , но я не смог найти простых решений этой проблемы.

Ответы [ 2 ]

32 голосов
/ 12 марта 2011

Вы можете настроить свои флеш-сообщения devise с бэкэндом I18n, который поддерживает devise. Если вы установите Ничего для определенного ключа, пустое флэш-сообщение не будет отображаться, например, для sign_in и sign_out:

en:
  devise:
    failure:
      unauthenticated: 'You need to sign in or sign up before continuing.'
      unconfirmed: 'You have to confirm your account before continuing.'
      locked: 'Your account is locked.'
      invalid: 'Invalid email or password.'
      invalid_token: 'Invalid authentication token.'
      timeout: 'Your session expired, please sign in again to continue.'
      inactive: 'Your account was not activated yet.'
    sessions:
      signed_in: ""
      signed_out: ""

UPD.

Вы не должны удалять ключ, иначе вы получите ошибку. Чтобы не отображать пустые флеш-сообщения, вы должны сделать простую проверку в представлении (например, с haml):

- unless notice.blank? && alert.blank?
  #flash
    .wrapper
      - unless notice.blank?
        %p.notice= notice
      - unless alert.blank?
        %p.alert= alert
8 голосов
/ 02 сентября 2011

Лучший способ скрыть пустые флеш-сообщения: если ваше сообщение находится в div с классом «alert» или «error», CSS3 позволяет использовать такой стиль:

.notice:empty {
  display: none;
}

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

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