Учитывая пример участников марафона ActiveRecord::Relation
со своим соответствующим временем окончания. Как определить позиции (то есть сначала, второе, третье) из двух или более участников, которые закончились точно в одно и то же время? Например:Как манипулировать индексом массива
@runners = Runners.where (maranthon_year_id: 2016, место жительства: 'спросить') заказ. (Finish_time:: по возрастанию)
Нормально, я бы перебирать это в виду например:
<% 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 %>
но вышеописанное не работает, если два или более пользователя закончили точно.
Это желаемый результат:
Обратите внимание, что позиция Эяль является 4th
(не 3rd
), потому что двое участников пришли второй.
Вы имели в виду «@ runners.each» вместо runners.each в строке 4? Я попробовал «@ runners.each», и он отлично пропустил позиции (спасибо!), Но он выполнил двойной цикл, поэтому у меня есть повторение - 8 строк вместо 4 строк. Я редактировал свой вопрос, чтобы добавить строки таблицы, поскольку это могло повлиять на ваш ответ? Еще раз спасибо. –
Я думаю, что я не использовал метод activerecord 'group' правильно. Я взял результаты и сгруппировал их с group_by вместо этого - теперь это должно работать с 'runners' (не' @ runners') –
Nice. Это сработало, потребовалось некоторое время, чтобы понять это сам. Огромное спасибо. –