计算值时返回的对象格式错误

时间:2014-03-21 09:23:42

标签: ruby-on-rails ruby-on-rails-4

我在计算燃烧的卡路里方面遇到了问题。

@calories_burned.each do |calories|
  json.child! do
    json.calories_burned calories.calories_burned(@calories_burned)
    json.week_number calories.week_number
  end
end

燃烧的卡路里数量,我想方法calories_burned 在该方法中传递一个包含字段exercises_countweek_nubmer的对象。 卡路里计算如下:exercise_count * 3。 问题是,当我返回收到的值时,返回整个数组。

def calories_burned(grouped_by_weeks)
  grouped_by_weeks.map { |x| x.exercises_count * 3 }
end

发生的事情的例子:

[{"calories_burned":[3,4],"week_number":17},{"calories_burned":[3,4],"week_number":22}]

应该如何做的例子。

[{"calories_burned":3,"week_number":17},{"calories_burned":4,"week_number":22}]

1 个答案:

答案 0 :(得分:0)

您正在将数组@calories_burned传递给方法calories.calories_burned(),然后该方法遍历整个数组,返回您指定的计算。

为了达到你想要的目的,我认为你只想传递当前的对象,这本身就很奇怪,因为它本身就是calories,所以最小的努力修复就是:

@calories_burned.each do |calories|
  json.child! do
    json.calories_burned calories.calories_burned
    json.week_number calories.week_number
  end
end

class Calories
  def calories_burned
    exercises_count * 3
  end
end

虽然我会仔细考虑更改对象的命名,@calories_burnedcaloriescalories.calories_burned - 这些名称非常令人困惑,并不表达他们所代表的对象的含义。也许更好的名字是@exercise_reportsexercise_reportexercise_report.calories_burned