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

これらの値が保持されないのはなぜですか? いいえ、私は Shotgun を使用していません。セッションを有効にしており、セッション シークレットを設定しています。

4

1 に答える 1

1

セッション変数に DataMapper リソースを保持することはできません。代わりに、ユーザー オブジェクトのキーをセッション変数に入れ、before ヘルパーを使用してアプリケーション全体でインスタンス変数を設定@user = User.first(session[:user])および使用します。@user

session[:loggedin]また、エントリは必要ありません。使用するだけです@user.nil?

于 2012-10-17T08:38:54.803 に答える