【发布时间】:2015-05-19 06:26:08
【问题描述】:
正在处理期末课程项目。我需要为成绩单页面分别计算我的主要学分和非主要学分的 GPA。当我在下面作为控制器运行此代码时,它可以正常工作并显示我主要和非主要的总学分,但是当我输入此代码时
@GPA_for_major = (course.credits * course.grade.scale) / course.credits
在 If 语句中,我在 TransController#transcript 中得到 NoMethodError
# Course::ActiveRecord_Relation:0x00000007b99798 的未定义方法 'credits'>
class Transcript
def initialize (course_array)
@course = course_array
@total_non_major_credits = 0
@total_major_credits = 0
@GPA_for_major = 0
@GPA_for_non_major = 0
for item in @course
if item.is_for_major
@total_major_credits = @total_major_credits + item.credits
else
@total_non_major_credits = @total_non_major_credits + item.credits
end
end
end
def course
@course
end
def total_non_major_credits
@total_non_major_credits
end
def total_major_credits
@total_major_credits
end
def GPA_for_major
@GPA_for_major
end
def GPA_for_non_major
@GPA_for_non_major
end
end
这是我的成绩单页面的控制器
class TransController < ApplicationController
def transcript
@courses = Course.all
@transcript =Transcript.new(@courses)
end
end
我不确定还包括什么,因为这是我的第一篇文章,但任何帮助都会很棒!谢谢!
【问题讨论】:
-
如果您将数组命名为复数形式,您的问题会更加明显。您的
@course变量不包含 a 课程,它包含课程数组,因此应将其称为@courses。然后,很容易看出你不能做@courses.credits。
标签: ruby-on-rails ruby methods undefined nomethoderror