假设我有一个 Match 对象数组,每个对象都属于循环赛结构中的一轮......
火柴
Round | Registrant_ID |Registrant_ID_2 |Winner_id
1 | 1 | 2 | 2
1 | 3 | 4 | 4
1 | 5 | 6 | 5
1 | 7 | 8 | 8
2 | 1 | 4 | 1
2 | 3 | 6 | 3
2 | 5 | 8 | 5
2 | 7 | 2 | 2
3 | 1 | 6 | 1
...
我想做的是按 Round 对所有匹配进行分组,然后循环遍历该轮并列出匹配项。
所需的输出将类似于...
<h1>Round 1</h1>
<table>
<thead>
<tr>
<th>Player 1</th>
<th>Player 2</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
<td>5</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>8</td>
</tr>
</tbody>
</table>
我面临的问题是我不知道如何通过他们的 round 属性遍历匹配记录。我不确定是否可以使用in_groups_of之类的东西,因为参加一轮的玩家数量会有所不同,并不总是像这里看到的那样是 8 人。
到目前为止,这是我的代码,它简单地遍历所有记录并为每场比赛创建一个表格(我正在寻找单个回合的表格):
- @matches.each do |match|
%h1= "Round #{match.round}"
%table.table.table-bordered
%thead
%tr
%th.span4 Player 1
%th.span4 Player 2
%th.span4 Winner
%tbody
%tr
%td= match.register.user.username
%td= match.register_2.user.username
%td= match.winner.user.username unless match.winner.nil?
这是输出的样子,注意单独的表格用于单独的回合: