Rails 4:显示项目集合的表格,按各种项目属性排序?

时间:2014-01-06 03:12:24

标签: ruby-on-rails

所以我有一个CareerEntry模型,它具有以下属性:name, job_category, company, group, location, year, full_intern,它代表了人们收到的工作机会。 full_intern是一个“实习”或“全职”字符串,代表工作机会的类型。所有CareerEntries都将由Admin界面创建,因此它基本上充当独立模型。这是我的问题:给定一堆CareerEntry对象,我想显示一个表格显示在我的职业页面上(在PagesController中有一个动作)。

我希望根据多个属性对表进行排序。我希望每年在表格中都有自己的部分,然后在每年内,我希望将实习条目组合在一起,并将全职条目组合在一起。然后,在这些分组中,我希望每个job_category都是它自己的部分(job_categories包含“投资银行”或“技术”等内容。)

我想要的一个很好的例子显示在this link.

的“2013”​​标签下

实现这一目标的最佳方法是什么?我知道,在我careers的{​​{1}}动作定义中,我可以:

PagesController

但是这只会按照我想要的顺序返回所有条目,并且不允许我将标题和分隔符分开,例如,job_categories。

有没有更简单的方法来实现我正在寻找的东西?

1 个答案:

答案 0 :(得分:1)

也许您正在寻找.group_by


分组

根据您提供的链接,您似乎希望按年度对结果进行分组,如下所示:

@careerentries = CareerEntry.order(year: :desc, fullintern: :asc, job_category: :asc)
@entries_by_year = @careerentries.group_by { |entry| entry.year }

这将为您提供根据您的规格订购的所有数据。然后,您可以使用group_by方法对其进行排序:

@entries_by_year.each do |entry|
    entry.name
end

然后你可以把它放到你的表中

好参考Group posts by Year - Rails