2015-06-06 30 views
0

我有一個小問題,我的廚師的菜譜,我試圖待辦事項嵌套循環(循環環路)。我有多個水平排列,我想環路廚師模板的所有級別。現在,我下來了以下內容:廚師模板嵌套循環

模板:

 <% @countries.each do |country| %> 
       <% @countries[@country].each do |key, val| %> 
         <Publication <%= @country @key @val %> /> 
       <% end %> 
     <% end %> 

屬性:

default['countries']['IE'] = {'57'=>'val2','58'=>'val2','61'=>'val','63'=>'val'} 
default['countries']['DE'] = {'110'=>'val2','113'=>'val2','115'=>'val2'} 
default['countries']['BE'] = {'134'=>'val2','138'=>'val2','139'=>'val2'} 

方藥:

template "conf.xml" do 
    action :create 
    variables ({ 
     :countries => node['countries'] 
       }) 
end 

所以首先我想太多循環的國家水平,那麼循環每個級別數組中使用陣列的關鍵和Val。我希望有人能幫助我解決這個問題。

最佳, - 泰斯

+0

是單雙引號模板錯字? –

+0

是的。我刪除它。 – Thijs

回答

0

你可以做這樣的事情,

<% @countries.each do |country, country_details| -%> 
     <% country_details.to_hash.each do |value| -%> 
     <Publication <%= "#{country} #{value[0]} #{value[1]}" %> /> 
     <% end -%> 
    <% end -%> 

的country_details最好應有哈希,然而,廚師改變了一種叫做這需要轉換的ImmutableMash到哈希。 然而,在轉換接收到的值後的迭代是一個數組代替的散列所以需要在陣列形式被寫入,即值[0]和值[1]。

上面的代碼返回以下輸出,不知道你是否正在尋找此,

<Publication IE 57 val2 /> 
    <Publication IE 58 val2 /> 
    <Publication IE 61 val /> 
    <Publication IE 63 val /> 
    <Publication DE 110 val2 /> 
    <Publication DE 113 val2 /> 
    <Publication DE 115 val2 /> 
    <Publication BE 134 val2 /> 
    <Publication BE 138 val2 /> 
    <Publication BE 139 val2 />