2010-11-17 62 views
6

我正在建設成績簿報告 - 一個二維表,顯示課程名稱水平和垂直學生列表。Rails,二維表,樞軸,嵌套哈希循環

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

我的數據是在具有這些字段的表:

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

學生和教訓的總數是不固定的。

我考慮過使用ruport/acts_as_reportable或者mysql pivot程序,但是它看起來像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