2016-09-07 4 views
0

У меня есть переменная сеанса, которую я хочу установить, когда пользователь попадает на страницу входа в систему. К сожалению, это не вступает в силу после перенаправления. Вместо этого я должен обновить страницу, а затем вижу новую переменную.Переменная сеанса Rails не устанавливается до перезагрузки страницы

Я попробовал несколько вещей:

Сначала я попытался просто установив переменную сеанса session[:theme] = theme

Затем я попробовал удаляемый старый ключ и установив новый ключ:

case theme 
    when 'theme1' 
    session.delete(:theme2) 
    session[:theme1] = true 
    else 
    session.delete(:theme1) 
    session[:theme2] = true 
    end 

Оба из них требуется обновление страницы после того, как я перенаправлен на регистрационную форму. Журналы моего сервера показывают, что переменная сеанса подбирается, но браузер, похоже, не хочет менять его до перезагрузки.

Любая помощь очень ценится.

ответ

0

Чтобы выполнить это, вам необходимо переопределить Devise 'SessionsController.new. Убедитесь, что у вас есть что-то вроде этого определено в config/routes.rb:

Rails.application.routes.draw do 
    ... 
    devise_for :users, controllers: {sessions: 'sessions'} 
    ... 
end 

, а затем в app/controllers/sessions_controller.rb:

class SessionsController < Devise::SessionsController 
    def new 
    super do |resource| 
     session[:my_session_variable] = 'hello world' 
    end 
    end 
end