2012-05-07 34 views
1

app.rb:101基本红宝石/屈:未定义变量 '会话'

require 'sinatra' 

class MyApp < Sinatra::Application 
    enable :sessions 

    if session[:user_id].nil? then 
     erb :login 
    end 
end 

require_relative 'routes/init.rb' 

config.ru:

require './app' 
run MyApp 

运行shotgun config.ruthin start -R config.ru收率:

app.rb:3:in `<top (required)>': undefined local variable or method `session' for main:Object (NameError) 

这非常101ish。是什么赋予了?

回答

2

我认为问题在于,您在get区块或类似区域内没有该代码。基本上,sinatra只会在请求的上下文中知道session对象。像这样的东西可以用于根网址:

require 'sinatra' 

class MyApp < Sinatra::Application 
    enable :sessions 

    get '/' do 
    if session[:user_id].nil? then 
     erb :login 
    end 
    end 
end