Sinatra不支持多行?

时间:2010-02-09 06:11:11

标签: ruby sinatra

对于以下代码,为什么只打印“世界”

get '/' do
 "Hello"
 "World"
end

6 个答案:

答案 0 :(得分:12)

这与sinatra本身无关。它只使用块的返回值,而在ruby中,返回值是最后一次计算的表达式,在您的情况下是“World”。这可能适合你:

get '/' do
  r = "Hello"
  r += "World"
end

在这种情况下,您可以根据需要向r添加尽可能多的字符串值,最后一个表达式将返回完整的字符串“HelloWorld”。

答案 1 :(得分:4)

如果我错了,请纠正我,但我相信普通红宝石,评估的最后一行是返回的。

答案 2 :(得分:3)

Tomas正确地回答了你的问题,但是一种方法可以做我认为你想做的事情(输出多行),你可以使用:

get '/' do
  output =<<EOS
Hello
World
EOS
  output
end

答案 3 :(得分:1)

您可以使用换行符来分隔行..

get '/' do
"Hello\nWorld"
end

答案 4 :(得分:1)

请勿将您的控制器与您的观点混淆。

您可能正在寻找的是:

get '/' do
  haml :hello_world
end

然后在views/hello_world.haml

Hello
World

答案 5 :(得分:0)

我同意马特。

如果您愿意,也可以将该方法用于一个文件。

 get '/' do
   erb :hello_world
 end

__ END __

@@程序hello_world
你好
世界

我只是在我的控制器中使用puts来将一些调试打印到STDOUT。