我现在正在尝试学习Rails。我创建了这个网站,用户可以在其中创建4人游戏比赛并将其分配到联赛。然后,我在表中显示分数。我正在像这样使用哈希。这是我的联赛索引控制方法:
def index
if signed_in?
@leagues = League.all
@users = User.all
@matches = Match.all
@league_scores=Hash.new(0)
@scores = Hash.new(0)
@leagues.each do |league|
@scores.clear
@matches.each do |match|
if match.league_id==league.id
@scores[match.player_1_id]+=match.player_1_score
@scores[match.player_2_id]+=match.player_2_score
@scores[match.player_3_id]+=match.player_3_score
@scores[match.player_4_id]+=match.player_4_score
end
end
@league_scores[league.id][email protected]_dup.delete_if {|key, value| value == 0 }
end
else
restrict_access
end
end
这是html文件的一部分:
<div class="p-2">
<div class="row border bg-light">
<div class="col-sm-4">Gracz</div>
<div class="col-sm">Suma wyników</div>
</div>
<%= @league_scores[league.id].each_key do |key| %>
<div class="row">
<div class="col-sm-4 border bg-light"><%= User.find(key).email%>/div>
<div class="col-sm"><%= @league_scores[league.id][key] %></div>
</div>
<%end%>
</div>
我遇到的问题是,在打印结果后,它还会将整个散列放在最后,如下所示:结果
{1 => 5,2 => 305,3 => 405,4 => 105,5 => 200}
我只是不明白为什么。我有一种感觉,我在复制哈希时在控制器中做错了,但我不知道该如何解决。有人可以解释我在做什么错吗?
这是因为=
您输入了:
<%= @league_scores[league.id].each_key do |key| %>
它将导致此调用的返回值放入输出html。您应该改为:
<% @league_scores[league.id].each_key do |key| %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句