我在计算燃烧的卡路里方面遇到了问题。
@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_count
和week_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}]
答案 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_burned
,calories
,calories.calories_burned
- 这些名称非常令人困惑,并不表达他们所代表的对象的含义。也许更好的名字是@exercise_reports
,exercise_report
和exercise_report.calories_burned
?