Gegeben eine ActiveRecord::Relation
Instanz von Marathon-Teilnehmern mit ihren jeweiligen Zielzeiten. Wie ermittle ich Positionen (d. H. Ersten, zweiten, dritten) von zwei oder mehr Teilnehmern, die genau zur gleichen Zeit fertig sind? Zum Beispiel:So manipulieren Sie Array's Index
@runners = Runners.where (maranthon_year_id: 2016 Ort: 'fragen') bestellen. (Finish_time: asc)
Normalerweise würde ich durch diese angesichts iterieren dies wie:
<% 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 %>
aber die oben funktioniert nicht, wenn zwei oder mehr Benutzer genau rechtzeitig fertig.
Dies ist die gewünschte Ausgabe:
Beachten Sie, dass Eyal Position ist 4th
(nicht 3rd
), weil zwei Teilnehmer zweite kam.
Meinen Sie "@ runner.each" anstelle von "luners" in Zeile 4? Ich habe '@ luners.each' probiert und es hat die Positionen gut übersprungen (Danke!), Aber es hat eine doppelte Schleife ausgeführt, also habe ich eine Wiederholung - 8 Zeilen statt 4 Zeilen. Ich habe meine Frage bearbeitet, um die Tabellenzeilen hinzuzufügen, da dies Ihre Antwort beeinflusst haben könnte. Danke noch einmal. –
Ich glaube, ich habe die activerecord 'group' Methode nicht korrekt verwendet. Ich habe die Ergebnisse genommen und sie mit group_by gruppiert - das sollte jetzt mit 'runners' funktionieren (nicht' @ runners') –
Schön. Das hat funktioniert, ich hätte eine Weile gebraucht, um das herauszufinden. Ich danke dir sehr. –