6

成績表レポートを作成しています。これは、水平方向にレッスン名が表示され、垂直方向に生徒のリストが表示される 2 次元のテーブルです。

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 ピボット プロシージャの使用を検討しましたが、ピボットでは 1 つのディメンションしか得られないようです。私の見解では、マウスオーバー機能と条件付き書式を追加して、各成績についてより多くの情報を表示したいので、それはうまくいきません。

したがって、私の唯一のオプションは、ネストされたハッシュを生成し、それをビューでループすることだと思います。あなたの考えは何ですか?誰かがネストされたハッシュを構築する方法を提案できますか? 250 行 (最大 50 人の学生、各 5 レッスン) をループ処理するには、プロセッサに負担がかかりすぎますか?

ハマった。助けてください。ありがとう!

4

1 に答える 1

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
于 2010-12-15T15:24:06.553 に答える