排序表条目然后分成组

时间:2012-04-16 00:09:01

标签: ruby-on-rails ruby sorting

我想通过一个表(Lessons)进行排序,并按主题(课程表中的一个字段)对它们进行分组。然后按主题显示它们。

所以我会有一个标题:主题

然后它将显示该主题中每个项目的图像,标题和描述。 然后它将移动到下一个主题,依此类推最多5个项目

例如:

Math
[img]   [img]   [img]  ...
title   title   title  ...
desc    desc    desc   ...

Science
[img]   [img]   [img]  ...
title   title   title  ...
desc    desc    desc   ...

etc.....

在控制器中你会如何进行排序然后分割?

如果您拥有动态数量的主题,如何在视图中显示此内容?

1 个答案:

答案 0 :(得分:2)

Enumerable#group_by符合您的需求:

my_lessons.sort_by{ |lesson|
  # Or use ActiveRecord to sort your data
  lesson.title
}.group_by{ |lesson|
  lesson.subject
}.each do |subject,subj_lessons|
  puts "subject: #{subject}"
  subj_lessons.each do |lesson|
    puts lesson.title
  end
end

从group_by返回的任何内容都将是哈希的关键,而值(subj_lessons)是与该分组匹配的所有项目的数组。

修改此选项以适合您的实际数据和输出需求。