На самом деле, если вы напишите это так:
- arr = [2, 4, 6, 8, 10, 12]
%table
- arr.each_with_index do |num, i|
- if i % 2 == 0
%tr
%td= "ODD row #{i}/#{i % 2} - column 1: #{num}"
- else
%td= "EVEN row #{i}/#{i % 2} - column 2: #{num}"
Вы увидите, что код выполнен правильно. Но HAML автоматически закрывает тег <TR>
(закрытие происходит автоматически с отступом).
И точно так же, HAML автоматически добавляет забытый тег <TR>
для висящего <TD>
.
Итак, один из возможных способов решить это:
- arr = [2, 4, 6, 8, 10, 12]
%table
- arr.each_with_index do |num, i|
- if i % 2 == 0
%tr
%td= "column 1: #{num}"
%td
-if arr.size > i+1
= "column 2: #{arr[i+1]}"
Надеюсь, это поможет.
[РЕДАКТИРОВАТЬ: добавлен пример erb]
В erb вы можете сделать это немного лучше (но я обычно не люблю его использовать):
<% arr = [2, 4, 6, 8, 10, 12] %>
<table>
<%= arr.each_with_index do |num, i| %>
<% if i % 2 == 0 %>
<tr><td><%= "column 1: #{num}" %></td>
<% else %>
<td><%= "column 2: #{num}" %></td></tr>
<% end %>
<% end %>
</table>