繁体   English   中英

Sinatra不支持多条线路?

[英]Sinatra does not support multiple lines?

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

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

这与sinatra本身无关。 它仅使用块的返回值,而在ruby中,返回值是最后计算的表达式,在您的情况下为“ World”。 这可能对您有用:

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

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

如果我错了,请纠正我,但我确实相信纯红宝石,最后评估的行是返回的内容。

Tomas正确回答了您的问题,但是一种执行我认为要执行的操作的方式(输出多行),可以使用:

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

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

get '/' do
"Hello\nWorld"
end

不要将您的控制器与您的视图混淆。

您可能正在寻找的是:

get '/' do
  haml :hello_world
end

然后在views/hello_world.haml

Hello
World

我同意马特的观点。

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

 get '/' do
   erb :hello_world
 end

__结束__

@@你好,世界
你好
世界

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM