2017-06-10 68 views
1

的阵列我有hiera数据木偶象下面这样:ERB:遍历哈希

myservers: 
    - serverA: 
     propertyA: valueA 
     propertyB: valueB 
     propertyC: valueC 
    - serverB: 
     propertyA: valueD 
     propertyB: valueE 

从这些数据配置文件应打印出像:

serverA: PropertyA: valueA ; propertyB: valueB ; propertyC: valueC 
serverB: PropertyA: valueD ; propertyB: valueE 

我试图把这个在erb模板中,通过遍历散列数组,但无法正确格式化。

<% myservers.each do |server| -%> 
<%= server -%>: <%= server.each do |k,v| -%> <%= k -%>: <%= v -%> ; 
<% end %> 
<% end -%> 

回答

1

我相信你的意思写的是:

<% @myservers.each do |server| -%> 
<% server.keys.each do |s| -%> 
<%= s %>: <% server[s].each do |k,v| -%><%= k -%>: <%= v -%> ;<% end %> 
<% end -%> 
<% end -%> 

或许(如果你知道每个数组元素将只包含一个服务器,在你的例子):

<% @myservers.each do |server| -%> 
<%= server.keys[0] %>: <% server[server.keys[0]].each do |k,v| -%><%= k -%>: <%= v -%> ;<% end %> 
<% end -%> 

换句话说,你正在将什么是散列哈希散列作为一个哈希数组。

另外,Puppet清单中的变量在ERB模板内显​​示为实例变量,因此@。见here

+0

解释代码修复将真正提高答案质量。 –

+0

我不确定周围的文字是否有帮助,但无论如何,更新。 –

+1

好的,再次更新一个关于在ERB模板中作为实例变量传递的Puppet变量的解释。 –