Ruby 如何在Sinatra中将变量传递到路由

Ruby 如何在Sinatra中将变量传递到路由,ruby,sinatra,Ruby,Sinatra,如果我有 # a bunch of methods and instance variables here @some_var = "this is a var" get '/' do p @some_var end => nil # I'd like this to return "this is a var"!!! 这是尽可能简单化的。我读过关于通过params散列获取变量,或者使用会话在路由之间传递变量的内容 甚至是 但这不是我想要的。在路径中访问变量之前,我很难理

如果我有

# a bunch of methods and instance variables here

@some_var = "this is a var"

get '/' do
    p @some_var
end

=> nil

# I'd like this to return "this is a var"!!!
这是尽可能简单化的。我读过关于通过params散列获取变量,或者使用会话在路由之间传递变量的内容 甚至是

但这不是我想要的。在路径中访问变量之前,我很难理解变量在方法中的作用域

我缺少什么?

尝试设置:

set :foo, 'bar'

get '/foo' do
  "foo is set to " + settings.foo
end

我认为您缺少的是,Ruby使得在执行块之前更改块的绑定成为可能。因此,当发生这种情况时,块执行的上下文不是它出现在源文件中的上下文。Sinatra如何使用此功能超出了评论的范围(恐怕也超出了我对Sinatra的了解)。嗨。本手册中有一节介绍作用域和绑定,非常有用,值得一读。
set :foo, 'bar'

get '/foo' do
  "foo is set to " + settings.foo
end