Mathieu, Paginate needs to know how many total records there are when you create the object so you must either do an SQL COUNT or get all the records and find the length of the array. If it''s a small data set, I say find them all once and save yourself the second SQL query. If it''s a large data set do the COUNT and then only find the records you want which will save overhead by retrieving a small amount of data even though it uses two queries. I''ve put a page on the Rails Wiki which might help you: http://wiki.rubyonrails.org/rails/pages/HowtoPagination To Adam, one tip about your solution. Once you have a Paginator object that the view can see, you can use its methods to get the number of items while in the view instead of having to set the variables @total, @first_msg, @last_msg in the controller. (Everyone has their own style but I like to keep my controller as streamlined as I can.) Just use something like this in your view: Listing <%= @message_pages.current.first_item %> - <%= @message_pages.current.last_item %> of <%= pluralize(@ message_pages.item_count, ''message'') %> HTH, Kevin