хамл новый тр каждые 3 пункта - PullRequest
6 голосов
/ 14 июня 2011

У меня есть следующий код (упрощенно, чтобы добраться до сути):

    - @assumptions[1].each do |ca|
      - if count % 3 == 1
        %tr
          %th
            = ca.value
      - else
        %th
          = ca.value
      - count = count + 1

Я не уверен, как заставить это работать в haml, чтобы каждые 4 элемента создавали новый тег.

Вот как он выводит:

  <tr>
    <tr> 
      <th> 
        700.0
      </th> 
    </tr> 
    <th> 
      1235.0
    </th> 
    <th> 
      0.8
    </th> 
    <th> 
      650.0
    </th> 
  <tr> 
    <th> 
      1050.0
    </th> 
  </tr> 
  <th> 
    0.2
  </th> 
</tr>

Вот как я хотел бы, чтобы он выводил:

<tr>
  <th>
    700.0
  </th>
  <th>
    1235.0
  </th>
  <th>
    0.8
  </th>
</tr>
<tr>
  <th>
    650.0
  </th>
  <th>
    1050.0
  </th>
</tr>

Надеюсь, это имеет смысл.

1 Ответ

22 голосов
/ 14 июня 2011

Вы можете использовать метод Enumerable each_slice , чтобы сгруппировать их в куски по 3:

- @assumptions[1].each_slice(3) do |group|
  %tr
    - group.each do |ca|
      %th= ca.value
...