Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays erb:迭代哈希数组_Arrays_Hash_Puppet_Erb - Fatal编程技术网

Arrays erb:迭代哈希数组

Arrays erb:迭代哈希数组,arrays,hash,puppet,erb,Arrays,Hash,Puppet,Erb,我在puppet中有hiera数据,如下所示: myservers: - serverA: propertyA: valueA propertyB: valueB propertyC: valueC - serverB: propertyA: valueD propertyB: valueE 此数据中的配置文件应按如下方式打印: serverA: PropertyA: valueA ; propertyB: valueB ;

我在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 -%>

: :  ;
或者(如果您知道每个数组元素只包含一个服务器,如您的示例所示):


: :  ;
换句话说,您将真正的哈希数组视为哈希数组


此外,Puppet清单中的变量在ERB模板中显示为实例变量,因此
@
。请参阅。

代码修复附带的解释将真正提高答案质量。我不确定在这方面使用文字是否有多大帮助,但无论如何,已更新。好的,再次更新,并解释了伪变量在ERB模板中作为实例变量传递的情况。
<% @myservers.each do |server| -%>
<%= server.keys[0] %>: <% server[server.keys[0]].each do |k,v| -%><%= k -%>: <%= v -%> ;<% end %>
<% end -%>