Ruby on rails Rails会话变量不存在';在重新加载页面之前无法设置

Ruby on rails Rails会话变量不存在';在重新加载页面之前无法设置,ruby-on-rails,ruby,session,devise,session-variables,Ruby On Rails,Ruby,Session,Devise,Session Variables,我有一个会话变量,我想在用户点击Desive登录页面时设置它。不幸的是,在我被重定向后,它不会生效。相反,我必须刷新页面,然后才能看到新变量 我试过几件事: 首先,我尝试设置session变量 会话[:主题]=主题 然后我尝试删除旧密钥并设置新密钥: case theme when 'theme1' session.delete(:theme2) session[:theme1] = true else session.delete(:theme1) se

我有一个会话变量,我想在用户点击Desive登录页面时设置它。不幸的是,在我被重定向后,它不会生效。相反,我必须刷新页面,然后才能看到新变量

我试过几件事:

首先,我尝试设置session变量
会话[:主题]=主题

然后我尝试删除旧密钥并设置新密钥:

case theme
  when 'theme1'
    session.delete(:theme2)
    session[:theme1] = true
  else
    session.delete(:theme1)
    session[:theme2] = true
  end
这两种方法都需要在重定向到登录表单后刷新页面。我的服务器日志显示正在提取会话变量,但浏览器似乎不想更改它,直到我重新加载


非常感谢您的帮助。

您需要覆盖Desive'
SessionController。新的
操作可完成此操作。确保在
config/routes.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
然后在app/controllers/sessions\u 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
class sessioncontroller
您需要覆盖Desive'
SessionController。新的
操作来完成此操作。确保在
config/routes.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
然后在app/controllers/sessions\u 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
class sessioncontroller
您有解决方案了吗?您有解决方案了吗?