2015-12-03 55 views
1

我有一個使用haml作爲模板的rails應用程序。在我的HAML部分之一:有條件地在haml中包裝元素

- customer.each_with_index do |customer, index| 

    -# start a new row for every odd defendant 
    - if index % 2 > 0 
    .grid-row 

    -# for each customer output each their details 
    .column-half 
     .bold-normal 
     = t('.customer') 
     = index + 1 
     =# other info 

    -# if the customer in the first column is the last one then add a blank column-half 
    - if index + 1 == customers.size && index % 2 > 0 
    .column-half 
       

我想它產生一些HTML如下:

<div class="grid-row"> 
    <div class="column-half"> 
    Customer 1 
    </div> 
    <div class="column-half"> 
    Customer 2 
    </div> 
</div> 
<div class="grid-row"> 
    <div class="column-half"> 
    Customer 3 
    </div> 
    <div class="column-half"> 
    &nbsp; 
    </div> 
</div> 

我非常希望隨時向客戶詳細介紹部分儘可能的乾燥。

非常感謝

回答

1

最簡單的方法,我認爲,是他們兩個塊分割,而不是與任何的條件模的東西費心。

- customers.each_slice(2) do |left, right| 

    .grid-row 
    .column-half 
     .bold-normal 
     = left # or whatever 

    .column-half 
     - if right 
     .bold-normal 
      = right # or whatever 
     - else 
     &nbsp; 

您也可以提取客戶詳細信息部分(.column-half)到部分。

+0

我喜歡你的建議(還沒有嘗試過),但我需要知道該客戶使用索引的編號。它不是一個硬編碼的數字,它基本上是可變數量的購買特定產品的客戶。 –

+0

@AlistairLaing:好的,您可以手動跟蹤索引。 –

+0

@AlistairLaing:「購買特定產品的可變數量的客戶」 - 這看起來像是重要數據,而不是短暫的列表索引。因此,它應該在正在呈現的對象中的某處可用。 –