如何在sinatra中访问哈希数据?

时间:2012-04-29 01:47:58

标签: ruby sinatra

我正在尝试访问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只打印变量?

谢谢!

2 个答案:

答案 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中的每个条目。