在ruby sinatra controller

时间:2018-05-19 21:56:43

标签: ruby sinatra slim-lang

我需要输出(例如,在浏览器中显示)一个存在于Ruby sinatra控制器中的变量值:

get '/endpoint' do        
  someVariable = MyModel.All
  # print/output/dump someVariable value !
end

我已经尝试putputsprint ......没有任何帮助。

1 个答案:

答案 0 :(得分:0)

您正在寻找的简单方法就是返回一个字符串。然后,此字符串将显示在您的浏览器中。

注意:putsp等在服务器日志中打印值,而不是在浏览器中打印。这也很有用,但显然不是你想要的。

注意#1 ,在您的情况下,您将返回一组对象。这不是一个字符串,并且Sinatra无法正确理解,因此您无法在浏览器中看到任何内容。一种解决方案是在将对象发送到浏览器之前序列化对象:

get '/' do
  ..
  object.to_s   # or object.to_json
end 

注意#2(棘手的一个:)):通过to_sto_json序列化的对象最终会以这种格式结束:

#<OpenStruct name="John Doe", age=44>

在这种情况下,您的浏览器会检测到打开/关闭括号<>)并尝试将其解释为HTML标记,并显示内容在浏览器中将为空,或者只是给定示例中的前导#字符。为避免这种情况,您可以强制响应的内容类型,以便它不会尝试将响应解释为HTML并只显示原始字符:

get '/' do
  ..
  content_type :txt
  object.to_s  # or object.to_json
end