7

我不知道这是一个红宝石问题还是一个 Sinatra 问题,因为我对这两个问题都很陌生。以下代码不起作用,我理解为什么,因为第一个 my_variable 是其块的本地代码。我只是不知道正确的语法。

require 'rubygems'
require 'sinatra'

configure do
    my_variable = "world"
end

get '/' do
    "Hello " + my_variable
end

EDIT1 - 以下工作,但我想我对配置块的正确目的感到困惑。

require 'rubygems'
require 'sinatra'

my_variable = "world"

get '/' do
    "Hello " + my_variable
end
4

4 回答 4

7
require 'rubygems'
require 'sinatra'

set :my_variable, "world"

get '/' do
  "Hello " + settings.my_variable
end
于 2009-11-28T14:46:04.397 回答
3

配置块只是与应用程序配置相关。如果是这样,您应该正确封装它:

require 'sinatra'

configure do
  set :my_option, "world"
end

get '/' do
  "Hello #{options.my_option}"
end
于 2011-09-29T22:55:31.930 回答
0

另一种方法是:

require 'rubygems'
require 'sinatra'

@my_variable="world"

get '/' do
  "Hello " + @my_variable
end
于 2009-12-01T14:29:42.757 回答
0

我会设置一个类变量——例如。@@my_variable— 在配置块内。configure 块存在于您要在启动时运行的代码,因此设置变量是有意义的。您的 Sinatra 应用程序是 的子类Sinatra::Base,因此在这种情况下使用类变量似乎是合适的。

于 2009-12-29T18:07:04.113 回答