В моем табло контроллера, я устанавливаю заказ, и я стек ранжирование результатов по score
:Присвоить действие в Rails на основе ранга в Порядке
@Quizzes = Quiz.where(finished: true, category: session[:category]).order(score: :desc).limit(10)
Это возвращает таблицу топ-10 приводит к таблице. Теперь я хочу поставить сообщение рядом с результатом первого места (верхний рейтинг) и другое сообщение для остальных результатов. Так что я попытался создать если/другое с помощью first!
:
<% if Quiz.where(category: session[:category]).first! %>
<td>You win</td>
<% else %>
<td>You lose</td>
<% end %>
Это действительно добавляет «Вы выиграли» с точки зрения, но он делает это для конечного результата (# 10) и else
сообщение не отображается вообще. Я попытался переключить его на .last
, но то же самое произошло.
Предполагая, что вы можете использовать .order
в качестве способа выбора результата, как мне его адаптировать?
UPDATE
Добавление полного кода для рендеринга таблицы оценки:
<% @quizzes do |quiz| %>
<tr>
<td></td>
<td><%= quiz.user.username %></td>
<td><%= quiz.user.city %></td>
<td><%= quiz.category %></td>
<td><%= quiz.score %></td>
<% end %>
<% @quizzes.each_with_index do |quiz, index| %>
<% if index == 10 %>
<td>You Win</td>
<% else %>
<td>You lose</td>
<% end %>
<% end %>
</tr>
почему не использовать '.each' для перебирать их? –
В настоящее время я использую '.each' для повторения результатов в таблице. Так что в настоящее время у меня будет таблица, показывающая результаты 1-10 на основе оценки (что вы видите в контроллере). Для строки с верхним рейтингом я хочу показать специальное сообщение в качестве последнего столбца. Для остальных 9 результатов я также хочу показать другое сообщение. Моя вера в '.each' заключается в том, что она не могла позволить мне настраиваться так. Я ошибаюсь? – darkginger