2010-11-17 12 views
6

मैं ग्रेड-बुक रिपोर्ट बना रहा हूं - एक दो आयामी तालिका जो पाठ नाम क्षैतिज रूप से जा रही है और छात्रों की सूची लंबवत चलती है।रेल, दो आयामी तालिका, पिवट, नेस्टेड हैश लूप

student_id, lesson_id, grade_in_pct, grade_in_pts, grade_high, grade_low, grade_median 

छात्रों और सबक की कुल संख्या निश्चित नहीं है:

Student Name | LessonID x | LessonID x | LessonID x   
Joe     95%  95% 
Mary    80%  80% 
Sam     80%     80% 

मेरे डेटा एक मेज इन क्षेत्रों है कि में है।

मैंने ruport/act_as_reportable या mysql pivot प्रक्रिया का उपयोग करने पर विचार किया, हालांकि ऐसा लगता है कि पिवट केवल मुझे एक आयाम देता है। तो यह काम नहीं करेगा, क्योंकि मेरे विचार में मैं प्रत्येक ग्रेड पर अधिक जानकारी दिखाने के लिए माउस-ओवर फीचर्स और सशर्त स्वरूपण जोड़ना चाहता हूं।

तो मुझे लगता है कि मेरा एकमात्र विकल्प एक नेस्टेड हैश उत्पन्न करना है और फिर दृश्य में इसके माध्यम से लूप करना है। आपके क्या विचार हैं? क्या कोई नेस्टेड हैश बनाने का तरीका सुझा सकता है? क्या यह 250 पंक्तियों (~ 50 छात्रों, 5 सबक) के माध्यम से लूप के लिए बहुत प्रोसेसर गहन होगा?

मैं अटक गया हूं। कृपया मदद करे। धन्यवाद!

उत्तर

3

यह कैसे मैं यह कर देगी:

MODELS: 

Student Model: 
    has_many: Grades 
    has_and_belongs_to_many: Lessons 

Lesson Model: 
    has_many: Grades 
    has_and_belongs_to_many: Students 

Grade Model: 
    belongs_to: Student, Lesson 

CONTROLLER: 

@data = Student.all 
@lessons = Lesson.all 

VIEW: 

header_row 

@data.each do |student| 
    @lessons.each do |lesson| 
    student.grades.find_by_lesson(lesson).some_data 
संबंधित मुद्दे