2012-10-13 2 views
1

배경 정보를 얻기 위해 트리니다드 서버에서 JRuby (최신, 1.7 RC2)/Sinatra 혼합을 사용하고 있습니다. 내가 출력으로 기대세션 값이 유지되지 않습니다.

get "/" do 
    @user = session[:user] || [3,2] 
    puts session[:user] 
    haml :home 
end 

get "/signed_in" do 
    "#{session[:loggedin]}" 
end 

post "/signup" do 
    user = User.create(:username => params[:username], :password => Digest::SHA1.hexdigest(params[:password])) 
    session[:user] = user 
    session[:loggedin] = true 
    puts session[:user] 
end' 

는 (코멘트)이다 :

# blank line 
#<User:0x4049839a> 
#<User:0x4049839a> 

하지만 정말 얻을 것은 :

# blank line 
#<User:0x4049839a> 
# blank line 

그리고 포스트 후, /signed_in 여전히 값이없는 것 출력 할 때, 실제로는 true이어야합니다.

왜 이러한 값이 유지되지 않습니까? 아니요, 엽총을 사용하지 않고 세션을 사용하도록 설정했으며 세션 비밀을 설정했습니다.

답변

1

DataMapper 리소스를 세션 변수에 보관할 수 없습니다. 대신 세션 변수에 사용자 개체에 열쇠를 넣어 @user = User.first(session[:user])를 설정 도우미 전에를 사용하고 응용 프로그램 또한

에 걸쳐 @user 인스턴스 변수를 사용하여, 당신은 단지 @user.nil?

+0

I을 사용 session[:loggedin] 항목이 필요하지 않습니다 ... 그걸 결코 알지 못했습니다. 진심으로 감사드립니다. – Imnotanerd

관련 문제