2013-02-12 113 views
2

您好我想就如何在再培训局在木偶编写一些这方面的帮助,基本上我有红宝石和嵌套循环

server::actionhost { 'details': 
    servername[ 'felix', 'washington', ], 
    ipa [ '192.168.43.5', '192.168.43.11', ], 
    enviro [ 'prod', 'uat', ], 
} 

我现在想从每个每个相应的元素打印出来的文件阵列中的一行,即从班里的模板文件的输出应该是这样的:

<% servername.each do |name| -%> 
<% ipa.each do |ip| -%> 
<% enviro.each do |env| -%> 
<%= name %> <%= ip %> <%= env %> 
<% end -%> 
<% end -%> 
<% end -%> 

felix 192.168.43.5 prod 
washington 192.168.43.11 uat 

当我尝试这个我在模板文件中写了下面的代码10

但我得到的是netmask和ipa的递归打印,而不是每个数组的打印,然后移动到下一个数组元素。

希望能得到一些关于如何实现正确输出的指导?

由于 丹

回答

1

一个可以执行Ruby代码(下面是Ruby代码)的.erb内,如果需要的话。在这种情况下,主要的事情是:定义一个多维数组,并使用Ruby的数组转置方法。

<% details = [servername, ipa, env]; transposed = details.transpose; transposed.each {|x| print x.at(0), " ", x.at(1), " ", x.at(2), "\n"} %> 
+0

我只是使用:'<(%)= [服务器,IPA,ENV ] .transpose.map {| x | “%s%s%s”%x} .join(“\ n”)%>' – 2013-04-08 22:42:12

0

这是一种冒险,因为它假设你有绝对的把握,你的阵列排队,但:

... <%servername.each_with_index做|名字,我| - %>
..... <%=名称%> <%= IPA [I]%> <%= ENVIRO [I]%>
... <%端%>

(请忽略...我不能让模板代码正确显示,否则!)

2

如何尝试类似字典的东西。类似的方法对我有用,希望对你有帮助。我的问题是,我有不同的变量,每个变量都应该有不同的值或参数。

定义像

$file_threshold = { 
      'received' => '10', 
      'doneJobs' => '20', 
      'recvq' => '30', 
      'sendq' => '40', 
      'doneq' => '50', 
      'docq'  => '60',} 

变量在模板文件中

<% @file_threshold.each do |key,value| -%> 

cmd = check_file.sh <%= key %> <%= value%> 

<% end -%> 

输出:

.... 
cmd = check_file.sh doneq 50 
....