我正在尝试访问sinatra中的哈希数据:
require 'rubygems'
require 'sinatra'
class List
def self.items
return items = {
:something1 => { :attribute1 => "somestring1", :attribute2 => "somestring2" },
:something2 => { :attribute1 => "somestring3", :attribute2 => "somestring4" }
}
end
end
list = List.items
get '/' do
list.each do |name, meta|
"#{name}<br>#{meta[:attribute1]}<br>#{meta[:attribute2]}<br><br>"
end
end
我希望sinatra打印每个哈希的哈希数据。但是,它只打印了哈希(可能是因为我调用了list.each
)。当我使用puts
时,控制台会打印出预期的结果。
澄清一下,所需的结果是:
something1
somestring1
somestring2
something2
somestring3
somestring4
如何让sinatra只打印变量?
谢谢!
答案 0 :(得分:2)
试试这个:
get '/' do
s = ''
list.each do |name, meta|
s << "#{name}<br>#{meta[:attribute1]}<br>#{meta[:attribute2]}<br><br>"
end
return s
end
答案 1 :(得分:1)
使用map
代替每个:
get '/' do
list.map do |name, meta|
"#{name}<br>#{meta[:attribute1]}<br>#{meta[:attribute2]}<br><br>"
end
end
each
返回您调用它的数组。 map
将返回一个新数组,根据您的块转换Enumerable中的每个条目。