2016-09-07 12 views
0

ユーザがdeviseログインページにヒットしたときに設定したいセッション変数があります。残念ながら、私はリダイレクトされた後には効果がありません。代わりに、ページを更新してから新しい変数を確認する必要があります。Railsのセッション変数がページリロードまで設定されない

私はいくつか試してみました:

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

両方:私はその後、私は古いキーを削除して新しいキーを設定しようとしただけでセッション変数に session[:theme] = theme

を設定しようとした

ファーストを私はログインフォームにリダイレクトされた後、ページリフレッシュが必要です。私のサーバーのログには、セッション変数が取得されていることが示されていますが、ブラウザはリロードするまでブラウザを変更したくないようです。

ご協力いただきまして誠にありがとうございます。

答えて

0

これを達成するには、DeviseのSessionsController.newアクションを上書きする必要があります。あなたはconfig/routes.rbで定義されたこのようなものを持っていることを確認してください:

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

そして:

class SessionsController < Devise::SessionsController 
    def new 
    super do |resource| 
     session[:my_session_variable] = 'hello world' 
    end 
    end 
end 
関連する問題