我在目标表上运行For循环以列出所有关键结果分数。关键结果分数是“关键结果”表中多个列的计算。
问题:我想将所有关键结果分数的平均分数添加到循环目标中。
目标1
平均值:xxx
目标2
平均值:xxx
问题:下面的代码片段可以获得所有分数,但我不知道如何平均这些分数?
<% @objectives.each do |objective| %>
<% objective.keyresults.each do |keyresult| %>
<%= number_to_percentage((keyresult.scores.maximum("score") - keyresult.start_score) / (keyresult.target - keyresult.start_score) * 100, precision: 0) %>
<% end %>
<% end %>
我想这取决于你想要的平均值,但这样的东西会起作用:
<% @objectives.each do |objective| %>
<% total_score = 0 %>
<% objective.keyresults.each do |keyresult| %>
<% score = (keyresult.scores.maximum("score") - keyresult.start_score) / (keyresult.target - keyresult.start_score) %>
<% total_score += score %>
<%= number_to_percentage(score * 100, precision: 0) %>
<% end %>
<%= "Average: #{number_to_percentage(total_score / objective.keyresults.size * 100, precision: 0)}" %>
<% end %>
但是......你真的不应该在视图中进行这些计算。这是业务逻辑,并且属于某个模型或者可能属于服务对象。