2011-11-24 103 views
0

我有以下的红宝石哈希显示值:如何从红宝石哈希

values = [ {"FA1": [{"Act 1": "A"},{"Act 2": "A"}] } ] 

我需要通过数值数组迭代得到这样

cells = "[Act 1  A],[Act 2  B]" 

目前一个字符串,我想这样的:

values[0]['FA1'].each do |key, val| 
    cells = [#{key} #{val}] 
end 

这给了我的

价值
#{key} as Act 1 A and #{val} as empty 

如何将这些值附加到由','分隔的变量?

+0

这不是乱码,这是一个包含包含散列数组的散列的数组。 –

+0

这确实说得很准确。 – verdure

回答

2

这很奇怪,但无论如何...

cells = [] 
values[0]['FA1'].each do |hash| 
    hash.keys.each { |key| cells << "[#{key} #{hash[key]}]" } 
end 
cells.join(",") 

这将产生:

"[Act 1 A],[Act 2 A]" 
+0

这就像一个魅力!非常感谢 :) – verdure

0

像这样的东西应该工作:

values[0]['FA1'].first.map do |key, val| 
    "#{key} #{val}" 
end.join(",") 
+0

适用于第一个元素,但是如果我删除.first,则val的值不会显示。 – verdure