对于以下代码,为什么只打印“世界”
get '/' do
"Hello"
"World"
end
答案 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。