2015-03-16 2 views
-1

Travail sur un projet de classe finale. J'ai besoin de calculer la moyenne pondérée cumulative de mes crédits majeurs et crédits non majeurs séparément pour une page de transcription. Quand je lance ce code ci-dessous en tant que contrôleur, il fonctionne très bien et montrer mes heures de crédit total pour les grands et non majeur, mais quand je mets ce codeNoMethodError méthode non définie

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

dans la déclaration Si je reçois NoMethodError dans TransController # transcription
méthode non définie des 'crédits' pour # Cours :: 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 

Ceci est le contrôleur pour ma page de transcription

class TransController < ApplicationController 
    def transcript 
    @courses = Course.all 
    @transcript =Transcript.new(@courses) 
    end 
end 

Je ne sais pas quoi d'autre à inclure parce que c'est mon premier message, mais toute aide sera génial! Merci!

+1

Votre problème serait plus évident si vous avez nommé vos tableaux comme pluriels. Votre variable '@ course' ne contient pas * a * bien sûr, elle contient un tableau de cours, elle devrait donc s'appeler' @ courses'. Ensuite, il est assez facile de voir que vous ne pouvez pas faire '@ courses.credits'. – meagar

Répondre

0

@course semble se référer à un tableau de cours et l'instruction if est dans une boucle qui effectue une itération sur les éléments définissant une variable locale item pour chaque cours. Étant donné que, vous devriez utiliser l'élément au lieu bien sûr:

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