У меня есть приложение Rails4, и я пытаюсь выполнить флеш-настройку пользовательского сообщения, когда сеанс истекает из-за неактивности.Сообщение «true» мигает на главной странице после таймаута сеанса
Я делаю это с помощью настройки параметра timeout_in
в devise.rb
:
Devise.setup do |config|
...
config.timeout_in = 30.minutes
...
end
и добавление пользовательских спасения в мой контроллер приложения:
rescue_from CanCan::AccessDenied do |exception|
if user_signed_in?
flash.now.alert = exception.message
render text: '', layout: true, status: 403
else
redirect_to new_user_session_path, notice: flash[:alert] || "You must login first"
end
end
Все, кажется, работает нормально ... когда время сеанса заканчивается, flash[:alert]
уже имеет правильное сообщение, поэтому я просто использую его, и когда пользователь пытается получить доступ к ресурсу без входа в систему сначала, возвращается сообщение «Вы должны войти первым».
Это код в страницы main.html.haml, что делает эти предупреждения:
.container
.main-content
#flash
- flash.each do |type, msg|
%div{class: ('alert alert-dismissable fade in')}
%button.close{data: {dismiss: :alert}} ×
= msg
= yield
Проблема заключается в том, что раз в то время как я вижу вспышку с текстом «Правда» появляется прямо ниже сессия сообщение тайм-аут:
, и я не могу понять, где он и откуда. Кажется, что что-то создает флэш-сообщение с этим значением. Интересно, что я делаю неправильно или если есть лучший способ отображать сообщения таймаута сеанса. Есть идеи?
Спасибо Хенрика. Я не уверен, что решение о том, что приложение «flash» controlloing application было хорошим решением, в первую очередь, но так оно и работает, и мы ничего не можем с этим поделать. –