在另一个关联类中返回方法的结果时,结果不正确
我有2个对象, User
和Goal
( User has_many :goals
和Goal 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