NoMethodError未定义的方法

时间:2015-03-16 23:24:21

标签: ruby-on-rails ruby methods undefined nomethoderror

致力于最终的课程项目。我需要分别为成绩单页面计算我的主要学分和非主要学分的GPA。当我在下面运行此代码作为控制器时,它工作正常并显示我的主要和非主要的总学分时间但是当我把这段代码

@GPA_for_major = (course.credits * course.grade.scale) / course.credits

在If语句中,我在TransController#transcript中得到NoM​​ethodError  未定义的方法'信用' for#Course :: ActiveRecord_Relation:0x00000007b99798>

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

我不确定还有什么要包括,因为这是我的第一篇文章,但任何帮助都会很棒!谢谢!

1 个答案:

答案 0 :(得分:0)

@course似乎是指一系列课程,if语句位于循环内,循环遍历为每个课程设置局部变量item的项目。鉴于此,你应该使用item而不是当然:

@GPA_for_major = (item.credits * item.grade.scale) / item.credits