Рельсы, двумерная таблица, сводка, вложенные хеш-циклы - PullRequest
6 голосов
/ 17 ноября 2010

Я строю отчет о зачетной книжке - двумерную таблицу, в которой названия уроков расположены горизонтально, а список учеников - вертикально.

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, однако похоже, что сводка дает мне только одно измерение.Так что это не сработает, потому что, на мой взгляд, я хочу добавить функции наведения мыши и условного форматирования, чтобы показать больше информации о каждой оценке.

Так что я думаю, что мой единственный вариант - сгенерировать вложенный хеш, а затем перебрать его в представлении.о чем ты думаешь?Может ли кто-нибудь предложить способ создания вложенного хэша?Было бы слишком интенсивно использовать процессор для циклического прохождения 250 строк (~ 50 учеников по 5 уроков в каждой)?

Я застрял.Пожалуйста помоги.Спасибо!

1 Ответ

3 голосов
/ 15 декабря 2010

Вот как бы я это сделал:

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
...