我正在开发一个需要使用会话 ID 信息的应用程序。我的会话存储在 cookie 中。我遇到的问题是,当用户第一次访问该站点时,控制器无法立即使用我的会话。我想我可能遗漏了一些关于如何在 Rails 中初始化会话的信息。但我对会话未加载这一事实持肯定态度,因为这是以下内容的输出session.inspect
:
#<Rack::Session::Abstract::SessionHash:0x15cb970 not yet loaded>
Rails 3.2.11
以下是使用and重现问题的方法ruby 1.9.3
:
test
使用控制器创建一个新应用程序:
rails new my_app
cd my_app/
rails g controller test
rm app/assets/javascripts/test.js.coffee
touch app/views/test/index.html.erb
尝试在该控制器中获取会话 ID:
class TestController < ApplicationController
def index
puts session[:session_id]
puts session.inspect
end
end
添加所需的路线:
MyApp::Application.routes.draw do
resources :test
end
然后访问应用程序并查看它的作用:
rails server
必须:http://localhost:3000/test
这是控制台中的输出:
#<Rack::Session::Abstract::SessionHash:0x3fd10f50eea0 not yet loaded>
然后又一次http://localhost:3000/test
,这次我们有一个会话:
400706c0b3d95a5a1e56521e455075ac
{"session_id"=>"400706c0b3d95a5a1e56521e455075ac", "_csrf_token"=>"Euaign8Ptpj/o/8/ucBFMgxGtiH7goKxkxeGctumyGQ="}