Rails,二维表,pivot,嵌套哈希循环

时间:2010-11-17 17:18:31

标签: ruby-on-rails arrays hash pivot ruport

我正在制作成绩簿报告 - 一个二维表格,用于显示水平的课程名称和垂直学生的列表。

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堂课)是否过于耗费处理器?

我被困住了。请帮忙。谢谢!

1 个答案:

答案 0 :(得分: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