給定一個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花了一段時間自己解決這個問題。非常感謝。 –