Как я могу отключить все флеш-сообщения Devise gem ( "успешно подписан", "вы вышли из системы" )? Спасибо.
Rails Отключить создание флеш-сообщений
Ответ 1
Вероятно, самый простой способ сделать это -
- Определите каждое сообщение как пустую строку
- Проверьте длину строки перед отображением флэш-сообщения.
В вашем файле devise.en.yml
укажите каждое сообщение как пустое:
en:
errors:
messages:
not_found: ''
already_confirmed: ''
not_locked: ''
и т.д.. Затем, в вашем макете, проверьте, чтобы строки пустого флэш-памяти были перед их выпуском.
<% flash.each do |key, value| %>
<%= content_tag :div, value, :class => "flash #{key}" unless value.blank? %>
<% end %>
Ответ 2
Ответ, который лучше всего подходит для меня, заключался в том, чтобы переопределить контроллер сеанса разработки, как этот
class SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
super
flash.delete(:notice)
end
# DELETE /resource/sign_out
def destroy
super
flash.delete(:notice)
end
end
Это безопасно отменяет метод create и destroy, удаляя флэш-сообщение
Ответ 3
Я смог отключить их в заданном контроллере, переопределив is_flashing_format?
:
def is_flashing_format?
false
end
Я использую Devise 3.5.6
Ответ 4
Для Rails 5.0.6 этот код будет работать.
app/controllers/sessions_controller.rb
class SessionsController < Devise::SessionsController
def new
flash.clear
super
end
end
Не забывайте маршруты.
config/routes.rb
devise_for :users, controllers: { sessions: 'sessions' }
Ответ 5
Devise включает удобный генератор для копирования всех видов в ваш проект:
rails generate devise:views
Таким образом вы можете самостоятельно отредактировать представления и решить, что вы хотите сохранить или выбросить (флэш-сообщения).