我需要输出(例如,在浏览器中显示)一个存在于Ruby sinatra控制器中的变量值:
get '/endpoint' do
someVariable = MyModel.All
# print/output/dump someVariable value !
end
我已经尝试put
,puts
,print
......没有任何帮助。
答案 0 :(得分:0)
您正在寻找的简单方法就是返回一个字符串。然后,此字符串将显示在您的浏览器中。
注意:puts
,p
等在服务器日志中打印值,而不是在浏览器中打印。这也很有用,但显然不是你想要的。
注意#1 ,在您的情况下,您将返回一组对象。这不是一个字符串,并且Sinatra无法正确理解,因此您无法在浏览器中看到任何内容。一种解决方案是在将对象发送到浏览器之前序列化对象:
get '/' do
..
object.to_s # or object.to_json
end
注意#2(棘手的一个:)):通过to_s
或to_json
序列化的对象最终会以这种格式结束:
#<OpenStruct name="John Doe", age=44>
在这种情况下,您的浏览器会检测到打开/关闭括号(<
和>
)并尝试将其解释为HTML标记,并显示内容在浏览器中将为空,或者只是给定示例中的前导#
字符。为避免这种情况,您可以强制响应的内容类型,以便它不会尝试将响应解释为HTML并只显示原始字符:
get '/' do
..
content_type :txt
object.to_s # or object.to_json
end