gpt4 book ai didi

ruby-on-rails - 按循环中的值排序

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:14 24 4
gpt4 key购买 nike

我正在尝试存储 FIFA 游戏,并设置带有排名系统的记分牌。

我不应该在 View 中使用逻辑,但如果我在 Controller 中计算它们,它会呈现一个错误,指出未指定方法用户。然而,当我将它放入循环中时,它会识别它,因为用户是循环项。

该应用程序已经可以保存游戏并计算获胜者。该应用程序将 winner_idloser_id 添加到每个游戏。稍后在记分牌中,我计算循环中有多少当前 user_id 匹配所有游戏的 winner_idloser_id。这样可以保持数据库干净。我不想在数据库中保留输赢,因为删除游戏后,它不应再计为输赢。

Controller :

class ScoreboardController < ApplicationController
def index
@users = User.all
end
end

查看:

<div class="panel panel-default" style="margin-left: 10px; margin-right:10px">
<!-- Default panel contents -->
<div class="panel-heading">Scoreboard</div>

<!-- Table -->
<table class="table">
<thead>
<th>#</th>
<th>Username</th>
<th>Ratio</th>
<th>Wins</th>
<th>Losses</th>
</thead>

<% @users.each do |user|%>
<tbody>

<td>
1

</td>

<td>
<%= user.username %>
</td>

<% if (Game.where(:winner_id => user.id).count) == 0 %>

<td>Unvalid</td>

<% elsif (Game.where(:loser_id => user.id).count) == 0 %>

<td>Unvalid</td>

<% else %>
<% @ratio = (number_with_precision((((Game.where(:winner_id => user.id).count).to_f) / (Game.where(:loser_id => user.id).count).to_f), precision: 2)) %>

<td><%= @ratio %></td>


<% end %>

<td>
<%= Game.where(:winner_id => user.id).count %>
</td>
<td>
<%= Game.where(:loser_id => user.id).count %>
</td>


<% end %>
</tbody>
</table>

</div>

我想按正确的顺序排列此列表。该列表应按比例排序。 => View 中的@ratio。我可以直接这样做吗?

在第一个 td 中,显示了当前位置。它为每个用户显示 1。我怎样才能使这个 1, 2, 3, ...?

最佳答案

您应该在 User 中添加这些方法模型。

class User < ActiveRecord::Base
has_many :wins, class_name: 'Game', foreign_key: 'winner_id'
has_many :losses, class_name: 'Game', foreign_key: 'loser_id'

def ratio
wins.count / losses.count.to_f * 100
end
end

然后在 Controller 中:

def index
@users = User.all.sort_by(&:ratio)
end

在 View 中,直接使用用户实例方法: <%= user.wins.count %>

关于ruby-on-rails - 按循环中的值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36402363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com