У меня есть всплывающее окно, которое позволяет просматривать / сохранять некоторую информацию только при аутентификации пользователя.
Я использую устройство.
В контроллере before_filter он проверяет, вошел ли пользователь в систему и, если нет, показывает страницу входа.
Эта страница входа представляет собой сокращенную версию страницы входа на сайт, так что она хорошо вписывается во всплывающее окно.
В действии аутентификации я вызываю authenticate_user !. Все работает нормально, когда пользователь вводит действительные учетные данные. Но когда учетные данные недействительны, devise автоматически перенаправляет на страницу входа на сайт (которая, как я уже говорил, отличается и не подходит для всплывающего окна)
Я пытался добавить спасение к вызову, но безрезультатно.
Кто-нибудь может предложить лучший / правильный способ сделать это, пожалуйста? :)
def authenticate
authenticate_user! rescue redirect_to "/popup/sign_in"
if user_signed_in?
respond_to do |format|
format.html {
flash[:notice] = I18n.t("logged_in_succesfully")
redirect_back_or_default(accounts_path)
}
else
flash[:error] = I18n.t("devise.failure.invalid")
render "/popup/sign_in"
end
end