erb:迭代哈希数组
erb: iterate over array of hashes
我在 puppet 中有 hiera 数据,如下所示:
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 -%>
我相信你想写的是:
<% @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。
我在 puppet 中有 hiera 数据,如下所示:
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 -%>
我相信你想写的是:
<% @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。