有条不紊地包裹haml的元素

时间:2015-12-03 08:48:21

标签: ruby-on-rails haml

我有一个使用haml作为其模板的rails应用程序。在我的一个haml partial:

- 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>

理想情况下,我希望尽可能将客户详细信息部分保留为DRY。

非常感谢

1 个答案:

答案 0 :(得分: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)提取为部分。