Расчет на результат For Loop в Rails - PullRequest
0 голосов
/ 14 марта 2019

Я запускаю цикл For Loop для таблицы целей, чтобы получить список всех ключевых результатов. Оценка ключевого результата - это расчет из нескольких столбцов таблицы ключевых результатов.

Проблема: Я хочу добавить средний балл из всех баллов по ключевым результатам к целям цикла.

Цель 1

  • Ключевые результаты 1
  • Ключевые результаты 2
  • Ключевые результаты 3

Средний: ххх

Цель 2

  • Ключевые результаты 1
  • Ключевые результаты 2
  • Ключевые результаты 3

Среднее: ххх

Вопрос: Приведенный ниже фрагмент работает, чтобы получить все оценки, но я не знаю, как усреднить эти оценки?

<% @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 %>

1 Ответ

2 голосов
/ 14 марта 2019

Я полагаю, это зависит от того, какое среднее значение вы хотите, но что-то вроде этого будет работать:

<% @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 %>

Однако ... вы ДЕЙСТВИТЕЛЬНО не должны делать эти вычисленияв представлении, как вы, кажется,.Это бизнес-логика, и она либо принадлежит модели, либо, возможно, объекту обслуживания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...