迭代多维散列

时间:2012-08-17 19:21:22

标签: ruby-on-rails hash loops

我之前发过一个问题,但我并不清楚我的意图。所以在这里我会再试一次。

我遇到的问题是我需要分别提取亚马逊和厨师的价值。现在它们都在迭代中保存在b值中。我试图在value.each中创建另一个循环但是我收到了一个错误。如何有效地分别有效地提取两个值?

任何帮助将不胜感激。

我以这种方式从yaml文件中获取哈希值

require 'yaml'
path = File.join(Rails.root, 'config', 'stage-aws-opscode.yml')
SAO = YAML.load_file(path)

stage-aws-opscode.yml包含以下数据

sandbox: &defaults
  amazon: aws-green
  chef: mdsol

validation:
  <<: *defaults

cruise:
  <<: *defaults

hendricks:
  <<: *defaults

distro:
  <<: *defaults

performance:
  <<: *defaults

innovate:
  amazon: aws-red
  chef: mdsol-production

production:
  amazon: aws-red
  chef: mdsol-production

这是我的迭代。

<%
 SAO.each do |key, value| 
 parent = "#{key}" 
  value.each do |a, b| 
   "#{a}"  "#{b}"
  end 
end
    %>

1 个答案:

答案 0 :(得分:0)

你想要这个:

SAO.each do |k,v|
 puts "env: #{k}; amazon: #{v[:amazon]}; chef: #{v[:chef]}; "
end

如果您在2个列表之后,则需要2个独立循环。