在另一个关联类中返回方法的结果时,结果不正确

我有2个对象, UserGoalUser has_many :goalsGoal belongs_to :user

在我的Goal模型中,我有……

 def total_goal_xp total_activities_sum = self.activities.sum(:quantity) return (total_activities_sum*xp_value) end 

在我的User show.html.erb文件中,我使用Google图表创建饼图并从我的Goal模型中提取数据。

  

出于某种原因,我可以访问goal表中的部分,例如:name但它不会让我从上面包含的Goal方法返回结果。

这是我的users_controller文件……

 def show @goals = current_user.goals @activities = current_user.activities.reverse end 

更新:我现在已经将show.html.erb文件中的行更改为…

  

现在它显示饼图,但不是按每个goal_id的单个总xp向下打破xp,它只需要获取所有目标的总xp并将该值分配给每个goal_id。 我有6个目标,当我将鼠标hover在图表上时,每个目标有16.7%的图表和相同的值xp。

第二次更新:我已将饼图移动到名为dashboard.html.erb的文件中的目标视图文件夹中,并在目标控制器中创建了一个名为仪表板的方法。 我已经将饼图的代码行改为……

  

这仍然给我与上面的线完全相同的结果。 它需要总价值并将其分配给每个目标,因此它们被平分。 有谁知道我的总和有什么问题,为什么不计算每个目标的结果而不是所有目标?

第三次更新:我已将仪表板移回用户视图文件夹,并在我的用户控制器中创建了一个名为dashboard的方法。 我已将仪表板中的代码行更改为…

  

基本上我已经切换了sum和order的顺序,但现在它给了我以下SQL错误消息……

 SQLite3::SQLException: wrong number of arguments to function SUM(): SELECT SUM() FROM "goals" WHERE "goals"."user_id" = ? 

第四次更新:我在总和之前添加了地图function。 这是新的代码行……

  

这给了我以下错误..

 undefined method `total_goal_xp' for 700:Fixnum 

700是第一个目标的正确total_goal_xp值,所以我觉得我很接近,但我不知道还有什么可以尝试。 我已经尝试了map()。总和,这仍然no data给我no data 。 我已经尝试了没有总和,并返回一个空白。

第五次更新:我在.map()之后删除了.sum()并添加了find_by(:goal_id),它现在给了我一个错误的数组,并且每个正确的值都在其中。 我怎样才能显示它?

这是完整的错误消息..

 undefined method `find_by' for [700, 500, 250, 2000, 500, 0]:Array Did you mean? find index_by find_all min_by