Chef 模板嵌套循环
Chef Template Nested Loops
我的厨师食谱有一个小问题,我正在尝试做一个嵌套循环(循环循环)。我有一个具有多个级别的数组,我想在厨师模板中循环所有级别。现在我很沮丧:
模板:
<% @countries.each do |country| %>
<% @countries[@country].each do |key, val| %>
<Publication <%= @country @key @val %> />
<% end %>
<% end %>
属性:
default['countries']['IE'] = {'57'=>'val2','58'=>'val2','61'=>'val','63'=>'val'}
default['countries']['DE'] = {'110'=>'val2','113'=>'val2','115'=>'val2'}
default['countries']['BE'] = {'134'=>'val2','138'=>'val2','139'=>'val2'}
食谱:
template "conf.xml" do
action :create
variables ({
:countries => node['countries']
})
end
所以首先我想循环国家级别,然后使用数组的键和值循环该数组中的每个级别。我希望有人能帮我解决这个问题。
最好的,
- 泰斯
你可以这样做,
<% @countries.each do |country, country_details| -%>
<% country_details.to_hash.each do |value| -%>
<Publication <%= "#{country} #{value[0]} #{value[1]}" %> />
<% end -%>
<% end -%>
理想情况下,country_details 应该是哈希,但是,Chef 将其更改为称为 ImmutableMash 的东西,需要将其转换为哈希。
但是,在转换时,迭代后收到的值是数组而不是散列,因此需要以数组格式编写,即 value[0] 和 value[1].
上面的代码returns输出如下,不知道你找的是不是这个,
<Publication IE 57 val2 />
<Publication IE 58 val2 />
<Publication IE 61 val />
<Publication IE 63 val />
<Publication DE 110 val2 />
<Publication DE 113 val2 />
<Publication DE 115 val2 />
<Publication BE 134 val2 />
<Publication BE 138 val2 />
<Publication BE 139 val2 />
我的厨师食谱有一个小问题,我正在尝试做一个嵌套循环(循环循环)。我有一个具有多个级别的数组,我想在厨师模板中循环所有级别。现在我很沮丧:
模板:
<% @countries.each do |country| %>
<% @countries[@country].each do |key, val| %>
<Publication <%= @country @key @val %> />
<% end %>
<% end %>
属性:
default['countries']['IE'] = {'57'=>'val2','58'=>'val2','61'=>'val','63'=>'val'}
default['countries']['DE'] = {'110'=>'val2','113'=>'val2','115'=>'val2'}
default['countries']['BE'] = {'134'=>'val2','138'=>'val2','139'=>'val2'}
食谱:
template "conf.xml" do
action :create
variables ({
:countries => node['countries']
})
end
所以首先我想循环国家级别,然后使用数组的键和值循环该数组中的每个级别。我希望有人能帮我解决这个问题。
最好的, - 泰斯
你可以这样做,
<% @countries.each do |country, country_details| -%>
<% country_details.to_hash.each do |value| -%>
<Publication <%= "#{country} #{value[0]} #{value[1]}" %> />
<% end -%>
<% end -%>
理想情况下,country_details 应该是哈希,但是,Chef 将其更改为称为 ImmutableMash 的东西,需要将其转换为哈希。 但是,在转换时,迭代后收到的值是数组而不是散列,因此需要以数组格式编写,即 value[0] 和 value[1].
上面的代码returns输出如下,不知道你找的是不是这个,
<Publication IE 57 val2 />
<Publication IE 58 val2 />
<Publication IE 61 val />
<Publication IE 63 val />
<Publication DE 110 val2 />
<Publication DE 113 val2 />
<Publication DE 115 val2 />
<Publication BE 134 val2 />
<Publication BE 138 val2 />
<Publication BE 139 val2 />