Отключить оповещение в Devise Rails - PullRequest
6 голосов
/ 25 марта 2012

Я использую Devise для своего приложения на Rails 3.

Как отключить предупреждающие сообщения Devise для успешного входа / отключения?

Ответы [ 2 ]

14 голосов
/ 25 марта 2012

Вы можете либо:

  1. Перейдите в config \ locales \ devise.en.yml и измените строки, которые вы хотите очистить (удаление не будет работать)Итак, вот так:

    sessions:
      signed_in: ''
      signed_out: ''
    
  2. Или расширить / переопределить контроллер сессий devise.Для этого скопируйте код действий create и destroy из здесь и вставьте его в контроллер (назовем его сессиями), который наследует от контроллера сессий devise, например:1015 *

    Затем удалите вызовы set_flash_message.Наконец, отредактируйте файл маршрутов, чтобы это изменение вступило в силу:

    devise_for :users, :controllers => { :sessions => 'sessions' }
    
0 голосов
/ 26 сентября 2012

Опираясь на то, что говорили другие, этот путь может быть немного проще, чем продлевать разработку или что-то в этом роде.

Обязательно используйте пустые строки вместо удаления всей строки, в противном случае devise просто вернется к использованию значения по умолчанию для этого сообщения.

# blank out any string you don't want to render as a message
devise:
  failure:
    already_authenticated: ''
    unauthenticated: ''
    unconfirmed: ''
   ...

Теперь devise все равно будет передавать пустую строку в качестве предупреждения. Но теперь это будет выглядеть примерно так: сообщение будет пустой строкой

#<ActionDispatch::Flash::FlashHash:0xa7647c4
  @closed=false,
  @flashes={:alert=>""},
  @now=nil,
  @used=#<Set: {:alert}>>

Я использую вспомогательный метод в своем файле ApplicationHelper, который обрабатывает сбор всех сообщений вместе. Вы можете сделать это по-другому, но это даст вам идею.

def all_messages

  # Standard flash messages
  messages = flash.map{|key,val| {:type=>key, :message=>val} unless val.blank? }.compact
    #                                                        |-------------------------|
    # This is where the magic happens. This is how I ignore any blank messages

  # Model validation errors
  model = instance_variable_get("@#{controller_name.singularize}")
  unless model.nil?
    messages += model.errors.full_messages.map do |msg|
      {:type=>:error, :message=>msg}
    end
  end

  return messages

end

И вуаля, оператор unless val.blank? отображает любое пустое значение на nil, а метод .compact удаляет все значения nil, оставляя вас с чистым скрипучим массивом без пустых сообщений.

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