実装内容
今回は個別で優秀なスコアを表彰するページの作成です
- 毎回ゲームをして点数のつくゲームを想定しています。
- 同点でも同順位として紹介されるしようとなっています。
テーブル内容
game_dateテーブル
id | user_name | score | create_at |
---|---|---|---|
1 | たろう | 150 | 2021-02-12 |
2 | ひろゆき | 3 | 2021-02-13 |
3 | ひろゆき | 24 | 2021-02-14 |
4 | はなこ | 220 | 2021-02-15 |
以上の様な体系でデータが格納されていることを想定しています。 |
rankings.controller
class RankingsController < ApplicationController
def index
@game_date = game_date.includes(:user).order(score: :desc)
#scoreが大きい順にgame_dateを取り出せるようにしておく
end
end
index.html.erb
<% ranking = [] %> #ranking.length+1を順位として使用する
<% @game_data.each do |game| %>
<div class="ribbon">
<h2><%= ranking.length + 1%>位:: <%= game.score %>点</h2>
</div>
<% ranking << turtle.score %>
<% end %>
今回ranking =[]に各スコアを収納しその個数+1でランキングを計算する方法を紹介しました。
はもう少しかんたんにスコアランキングが作れるお知恵をお持ちの方がおられればアドバイスいただけると嬉しいです