What is this error

Hi all,

I am getting this bellow error

This is my code(method):
def self.generate_normal_report(batch_ids)
batches = Batch.find(:all,:conditions => {:id => batch_ids},:select => “id”)
batches.each do |batch|
exam_groups_main = batch.exam_groups
exam_scores_main = exam_groups_main.map(&:exams).flatten.compact.map(&:exam_scores).flatten.compact
archived_exam_scores_main = exam_groups_main.map(&:exams).flatten.compact.map(&:archived_exam_scores).flatten.compact
terms = batch.terms.map{|term| term.id.to_s}
students = batch.students.all(:select => “id,first_name,batch_id,user_id”)
student_ids = students.map(&:id)
archived_students = ArchivedStudent.all(:conditions => {:batch_id => batch.id},:select => “id,first_name,batch_id,former_id”)
student_ids.each do |student_id|
student_report = Hash.new
student = Student.find(student_id)
student_report[:term_report] = Hash.new
term_report = Hash.new
terms.each do |term|
exam_group_report = Hash.new
exam_groups = exam_groups_main.select{|exam_group| exam_group.term_id.to_s == term.to_s }
exam_groups.each do |exam_group|
exam_group_report[exam_group.id.to_s.to_sym] = Hash.new
exam_group_report[exam_group.id.to_s.to_sym][:exam_report] = Array.new
exams = exam_group.exams
exam_report = Hash.new
exams.each do |exam|
student_exam_score = exam_scores_main.select{|score| score.exam_id == exam.id and score.student_id == student.id}.first
student_mark = student_exam_score.nil? ? 0 :student_exam_score.marks
all_archived_score = archived_exam_scores_main.select{|score| score.exam_id == exam.id}.flatten.compact.map(&:marks)
all_normal_score = exam_scores_main.select{|score| score.exam_id == exam.id }.flatten.compact.map(&:marks)
all_score = (all_archived_score + all_normal_score).compact.sort.reverse
exam_position = all_score.index(student_mark).nil? ? all_score.size : (all_score.index(student_mark) + 1)
exam_report = {:subject_id => exam.subject.id,:exam_id => exam.id,:marks => student_mark,:maximum_marks => exam.maximum_marks,:exam_position => exam_position}
if all_score.size == 0
exam_report[:exam_average] = 0
else
exam_report[:exam_average] = (all_score.sum.to_f / all_score.size)
end
exam_group_report[exam_group.id.to_s.to_sym][:exam_report] << exam_report
end
class_information = ExamReport.calculate_class_position_and_class_average(exam_group,student,students,archived_students)
exam_group_report[exam_group.id.to_s.to_sym][:exam_group_position] = class_information[:rank]
exam_group_report[exam_group.id.to_s.to_sym][:exam_group_average] = class_information[:class_average]
exam_group_report[exam_group.id.to_s.to_sym][:exam_group_total] = class_information[:student_mark]
end
term_report[term.to_sym] = Hash.new
term_information = ExamReport.calculate_term_position_and_term_average(term,exam_groups,student,students,archived_students)
term_report[term.to_sym][:exam_group_report] = exam_group_report
term_report[term.to_sym][:term_position] = term_information[:rank]
term_report[term.to_sym][:term_average] = term_information[:class_average]
term_report[term.to_sym][:term_total] = term_information[:student_mark]
end
student_report[:term_report] = term_report
annual_information = ExamReport.calculate_annual_position_and_annual_average(student,students,archived_students,batch.terms)
student_report[:annual_position] = annual_information[:rank]
student_report[:annual_average] = annual_information[:class_average]
student_report[:annual_total] = annual_information[:student_mark]
exam_report = ExamReport.find_by_student_id(student_id)
full_report = Hash.new
full_report[:batch_id] = student.batch_id
full_report[:report] = student_report
report_array = Array.new
report_array << full_report
if student.graduated_batches.empty?
if exam_report.nil?
report_card = ExamReport.new(:student_id => student.id,:report_card => report_array)
report_card.save
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = Hash.new
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = self.prepare_combined_marksheet(student,batch_ids,student_report)
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = Hash.new
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = self.prepare_combined_marksheet(student,student.batch.id.to_a,student_report)
report_card.save
else
exam_report.destroy
report_card = ExamReport.new(:student_id => student.id,:report_card => report_array)
report_card.save
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = Hash.new
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = self.prepare_combined_marksheet(student,batch_ids,student_report)
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = Hash.new
report_card.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = self.prepare_combined_marksheet(student,student.batch.id.to_a,student_report)
report_card.save
end
else
unless exam_report.nil?
if exam_report.report_card.select{|report| report[:batch_id] == student.batch.id}.empty?

          exam_report.report_card << full_report
          exam_report.save  ///HERE I AM UNABLE TO SAVE IT

          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = Hash.new
          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = self.prepare_combined_marksheet(student,batch_ids,student_report)
          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = Hash.new
          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = self.prepare_combined_marksheet(student,student.batch.id.to_a,student_report)
          exam_report.save
   else
          exam_report.report_card.delete_if{|report| report[:batch_id] == student.batch.id}
          exam_report.report_card << full_report
          exam_report.save
          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = Hash.new
          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:combined_report] = self.prepare_combined_marksheet(student,batch_ids,student_report)
          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = Hash.new
          exam_report.report_card.select{|r| r[:batch_id] == student.batch.id}.first[:batch_combined_report] = self.prepare_combined_marksheet(student,student.batch.id.to_a,student_report)
          exam_report.save
        end
      else
        report_card = ExamReport.new(:student_id => student.id,:report_card => report_array)
      end
    end
  end
end

end

No method error undefined method `each’ for nil:NilClass

NoMethodError (undefined method each' for nil:NilClass): /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:40:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in map' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:38:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:18:in node_export' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:18:in add’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:18:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:17:in each’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:17:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:16:in map’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:16:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:15:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:18:in node_export’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:18:in add' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:18:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:17:in each' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:17:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:16:in map' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:16:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:15:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in node_export' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in add’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:40:in each’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:40:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in map’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:38:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:110:in node_export’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:110:in add' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:110:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:109:in each' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:109:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:108:in seq' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:108:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:107:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in node_export' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in add’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:40:in each’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:40:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in map’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:38:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in node_export’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in add' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:41:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:40:in each' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:40:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in map' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:39:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:38:in to_yaml’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:110:in node_export' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:110:in add’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:110:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:109:in each’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:109:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:108:in seq’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:108:in to_yaml' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in call’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in emit' /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml.rb:391:in quick_emit’
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/yaml/rubytypes.rb:107:in to_yaml' app/models/exam_report.rb:89:in generate_normal_report’
app/models/exam_report.rb:15:in each' app/models/exam_report.rb:15:in generate_normal_report’
app/models/exam_report.rb:7:in each' app/models/exam_report.rb:7:in generate_normal_report’
app/controllers/exam_reports_controller.rb:73:in normal_report_generation' passenger (3.0.9) lib/phusion_passenger/rack/request_handler.rb:96:in process_request’
passenger (3.0.9) lib/phusion_passenger/abstract_request_handler.rb:513:in accept_and_process_next_request' passenger (3.0.9) lib/phusion_passenger/abstract_request_handler.rb:274:in main_loop’
passenger (3.0.9) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in start_request_handler' passenger (3.0.9) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in send’
passenger (3.0.9) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in handle_spawn_application' passenger (3.0.9) lib/phusion_passenger/utils.rb:479:in safe_fork’
passenger (3.0.9) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in handle_spawn_application' passenger (3.0.9) lib/phusion_passenger/abstract_server.rb:357:in send
passenger (3.0.9) lib/phusion_passenger/abstract_server.rb:357:in server_main_loop' passenger (3.0.9) lib/phusion_passenger/abstract_server.rb:206:in start_synchronously’
passenger (3.0.9) lib/phusion_passenger/abstract_server.rb:180:in start' passenger (3.0.9) lib/phusion_passenger/classic_rails/application_spawner.rb:149:in start’
passenger (3.0.9) lib/phusion_passenger/spawn_manager.rb:219:in spawn_rails_application' passenger (3.0.9) lib/phusion_passenger/abstract_server_collection.rb:132:in lookup_or_add’
passenger (3.0.9) lib/phusion_passenger/spawn_manager.rb:214:in spawn_rails_application' passenger (3.0.9) lib/phusion_passenger/abstract_server_collection.rb:82:in synchronize’
passenger (3.0.9) lib/phusion_passenger/abstract_server_collection.rb:79:in synchronize' passenger (3.0.9) lib/phusion_passenger/spawn_manager.rb:213:in spawn_rails_application’
passenger (3.0.9) lib/phusion_passenger/spawn_manager.rb:132:in spawn_application' passenger (3.0.9) lib/phusion_passenger/spawn_manager.rb:275:in handle_spawn_application’
passenger (3.0.9) lib/phusion_passenger/abstract_server.rb:357:in __send__' passenger (3.0.9) lib/phusion_passenger/abstract_server.rb:357:in server_main_loop’
passenger (3.0.9) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously’
passenger (3.0.9) helper-scripts/passenger-spawn-server:99

keerthi priya wrote in post #1119115:

Hi all,

I am getting this bellow error

No method error undefined method `each' for nil:NilClass

The error is what it says it is. You are sending the message 'each" to a
nil object reference. Look back through the stack trace until you get to
the first line containing your own code...

NoMethodError (undefined method `each' for nil:NilClass):

... a bunch of framework references....

Something you should recognize...

  app/models/exam_report.rb:89:in `generate_normal_report'

Line 89 of exam_report.rb. Find out which object is receiving the 'each'
message and figure out why the reference is nil.

This code needs to be refactored. It is way too long. Many lines are too long.