对订购数据进行分组

时间:2012-09-10 01:09:45

标签: ruby-on-rails ruby activerecord

显示组数据的最佳方式是什么?

目前在我的控制器中我有:

@items = Item.order("group_name")

然后在我看来,我可以遍历它:

- @items.each do |item|
  %p= item.name

制作这样的东西最干净,最有效的方法是什么:

<strong>Group Name 1</strong>
<p>Item 1</p>
<p>Item 2</p>
<strong>Group Name 2</strong>
<p>Item 1</p>

2 个答案:

答案 0 :(得分:1)

我认为group_by方法可以满足您的需求。这里有一个很好的概述:http://railscasts.com/episodes/29-group-by-month

答案 1 :(得分:1)

控制器

@items = Item.sanitized_and_ordered

模型

class Item <<  ActiveRecord::Base
scope :ordered_group ,order('group_name')

class << self
   def sanitized_and_ordered
      ordered_group.group_by {|item| item.group_name}
   end
 end
end

查看

- @items.each_pair do |key,value|
  %p= key
   - value.each do |item|
      %p= item.name