我有两个变量使用zip连接在一起。这个
@finals_per_game
变量遍历各个季节,以找到相应年份球员的平均值。这个
@won_ring
变量查找
matches.round_abbreviation
'GF'
例如
玩家在2017年和2018年有“GF”,但在2019年没有。目前
只有两条记录,因此不匹配
@每场总决赛
matches.match_year
2019 | Won |
2018 | Won |
2017 | |
2019 | |
2018 | Won |
2017 | Won |
看法
我必须对照主队和客队的总分来检查球员是否属于任何一支球队,以及他们是否获胜。
<table>
<% @finals_per_game.zip(@won_ring).each do |s, ring| %>
<tr>
<td>
<%= s.season %>
<% if s.team_id == ring.try(:match).try(:home_team_id) && (ring.home_team_total_score < ring.away_team_total_score) %>
Won
<% elsif s.team_id == ring.try(:match).try(:away_team_id) && (ring.away_team_total_score < ring.home_team_total_score) %>
Won
<% end %>
</td>
<td><%= s.games_count %></td>
<td><%= '%.1f' % s.avg_points %></td>
<td><%= '%.1f' % s.avg_rebounds %></td>
</tr>
<% end %>
</table>
控制器
@finals_per_game = Stat.joins(:match, :player, :club).where('stats.player_id = ? AND matches.round_abbreviation NOT LIKE ?', @player.player_id, '%Rd%').group('players.id, stats.team_id, matches.match_year, clubs.abbreviation, clubs.id')
.select('players.id, stats.team_id, matches.match_year as season, AVG(stats.point) as avg_points, AVG(stats.rebounds) as avg_rebounds, COUNT(stats.id) as games_count').order('matches.match_year desc')
@won_ring = Stat.joins(:match, :player, :club).where('stats.player_id = ? AND matches.round_abbreviation = ?', @player.player_id, 'GF')
.group('players.id, matches.id, clubs.id, matches.match_year, clubs.abbreviation').select('matches.*, players.*, clubs.*')
.order('matches.match_year desc')