给定一个ActiveRecord::Relation
马拉松参与者的实例及其各自的完成时间。我如何确定在同一时间完成的任何两个或更多参与者的职位(即第一,第二,第三)?例如:如何操作数组索引
@runners = Runners.where(maranthon_year_id:2016,位置: '问')的顺序。(完成时间::升序)
通常,我通过有鉴于此迭代像这样:
<% count = 0 %>
<% if @runners.each do |runner| %>
<tr>
<td><%= runner.id %></td>
<td><%= runner.name %></td>
<td><%= runner.finish_time %></td>
<td><%= (count += 1).ordinalize %></td>
</tr>
<% end.empty? %>
<tr>
<td colspan="4"> No Record Found</td>
</tr>
<% end %>
但是,如果两个或更多的用户在准确的时间完成上述不起作用。
这是所需的输出:
注意的Eyal的立场是4th
(不3rd
),因为两个参与者名列第二。
您的意思是'@ runners.each'而不是runners.each在第4行吗?我尝试了'@ runners.each',它很好地跳过了位置(谢谢!),但它执行了一个双循环,所以我重复了8行而不是4行。我编辑了我的问题来添加表格行,因为这可能会影响您的答案?再次感谢。 –
我想我没有正确使用activerecord'group'方法。我已经将结果与group_by分组 - 取而代之的是 - 现在可以使用'runners'(而不是'@ runners') –
不错。这工作,woulda花了一段时间自己解决这个问题。非常感谢。 –