1

app.rb:

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.ruまたはthin start -R config.ruイールド:

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

これは非常に101っぽいです。何が得られますか?

4

1 に答える 1

2

問題は、getブロック内などにそのコードがないことだと思います。session基本的に、sinatraはリクエストのコンテキストでのみオブジェクトについて認識します。このようなものは、ルートURLに対して機能します。

require 'sinatra'

class MyApp < Sinatra::Application
  enable :sessions

  get '/' do
    if session[:user_id].nil? then
      erb :login
    end
  end
end
于 2012-05-07T21:51:40.130 に答える