2

こんにちは、人形のerbでこれをコーディングする方法について助けてください。基本的に私は持っています

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

これを、各配列のそれぞれの要素を 1 行でファイルに出力したいと思います。つまり、クラスのテンプレート ファイルからの出力は次のようになります。

felix 192.168.43.5 prod
washington 192.168.43.11 uat

これを試みたとき、テンプレート ファイルに次のコードを書きました。

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

しかし、私が得るのは、各配列からの印刷ではなく、ネットマスクとipaの再帰的な印刷であり、次の配列要素に移動します。

正しい出力を達成する方法についてのガイダンスをいただければ幸いです。

ありがとうダン

4

3 に答える 3

1

必要に応じて、.erb 内で Ruby コード (以下は Ruby コード) を実行できます。この場合の主なものは、多次元配列を定義し、Ruby の転置メソッドを配列に使用することです。

<% details = [servername, ipa, env]; transposed = details.transpose; transposed.each {|x| print x.at(0), " ", x.at(1), " ", x.at(2), "\n"}  %>
于 2013-02-14T01:01:21.433 に答える
0

これは、配列が揃っていることを完全に確信していることを前提としているため、ちょっと危険ですが、次のようになります。

...<% servername.each_with_index do |name, i| -%>
.....<%= 名前 %> <%= ipa[i] %> <%= 環境[i] %>
...<% 終了 %>

(無視してください ... そうしないと、テンプレート コードが正しく表示されませんでした!)

于 2013-04-08T22:36:56.323 に答える