Using pagination to group pages by attribute value


#1

Hi -

I’m trying to group records based on some attribute they or an
association of their’s have. The simplest example I could think of to
drive my point is this:

Assume the following model associations (pardon my butchering of rails)

Faculty has_many :courses
Course belongs_to :faculty

I want to paginate courses based on the name of the faculty they belong
to.

The paging may look something like this (instead of page numbers):

in the actual view

<< prev Archeology Botanics … |Math| … Zoology next >>

listing all courses of current page

I’d appreciate help on how to accomplish that. I know will_paginate does
numbering, but I couldn’t figure out if it can do the above.


#2

Shilo, you might be interested in “group_by”:
http://weblog.rubyonrails.org/2006/3/1/new-in-rails-enumerable-group_by-and-array-in_groups_of

The first example groups by an attribute (in the above case, “day”).
Try it in script/console first to see how the data structure is
returned. It’s a nested array of key, values where the key is the
attribute and the value is an array of records that are in that group.
You can iterate through it with the each call as in that example.

HTH!

-Danimal

P.S. I’ve used group by with will_paginate and it works just fine

On Mar 27, 8:41 am, Shilo A. removed_email_address@domain.invalid