2016-09-07 59 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 
相關問題