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