gpt4 book ai didi

mysql - 迭代内的数字总和 - Rails

转载 作者:行者123 更新时间:2023-11-30 01:23:50 25 4
gpt4 key购买 nike

我有四个团队,每个团队有四个人,我正在尝试为每个团队创建一个图表,@all按团队 ID 从团队和组中选择每个人,因此此循环将产生 4 次迭代,我尝试将每个团队的目标、预测和实现数据相加:

<% @all.each do |a| %>

<div style="width:100%; height: 900px; overflow: auto;">
<br>
<h1>
<%= Date.today.strftime("%B") %>
Sales : <%= a.team.name %>
</h1>

<canvas id="<%= a.team.name %>" height="800" width="1000"></canvas>

<% @main = Individual.find(:all, :conditions => "team_id = '#{a.team_id}'")%>


<script>
var target = <%= @main.sum(:target) %>;
var forecast = <%= @main.sum(:forecast) %>;
var achieved = <%= @main.sum(:achieved) %>;
var barChartData = {
labels : ["Target", "Forecast", "Achieved"],
datasets : [{
fillColor : "rgba(237,28,36,1)",
strokeColor : "rgba(237,28,36,1)",
data : [target, forecast, achieved]
}]

}
var opt = {
scaleFontFamily : "'Trebuchet'",
scaleFontSize : 20,
scaleFontColor : "#fff",

}

var myLine = new Chart(document.getElementById("<%= a.team.name %>").getContext("2d")).Bar(barChartData, opt);

</script>

</div>
<% end %>

但我收到此错误 undefined method '+' for #<Individual:0x007ff08c8164e0>

如果我分别遍历每个人,它会显示正确的数字,只是不会将它们相加。

最佳答案

您需要传递过程而不是符号,例如,替换:

@main.sum(:target)

@main.sum(&:target)

将 nil 值视为 0:

@main.sum { |el| el.target.to_f } # use to_f or to_i depending on your data
<小时/>

旁注,考虑使用 gon在js中传递数据。

关于mysql - 迭代内的数字总和 - Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228756/

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