I've just read three* different messages on the list, all posted
within a day of each other, and all having problems with the same
thing - rails built in pagination.
The common misconception seems to be that rails built in pagination
works as follows:
# grab a list of all the females
@users = User.find(:all, :conditions => ['gender = ?', 'F'])
# paginate the list:
@user_pages, @users = paginate(:users, :per_page => 10)
The above will paginate a list of users, however, it will NOT have the
conditions applied to it that you specified in the first find
statement (grabbing a list of females). The two statements are not
related to each other. The first finds all the females and stores the
results in the @users instance variable. The second finds and
paginates _ALL_ of the users and stores them in the @users ivar,
overwriting the original contents. This is most likely _not_ what you
If you wanted to paginate a list of all the females, the correct way
to do it is the following
# paginate a list of females
@user_pages, @users = paginate(:users, :conditions => ['gender = ?',
'F'], :per_page => 10)
now, having said that, please be aware that the rails built in
pagination has been deprecated! (see here for more details
http://dev.rubyonrails.org/changeset/6992) In other words, do not use
it for future projects!
Instead, you should be using something like the will_paginate plugin
(you can read about it here: http://errtheblog.com/post/4791)
Hopefully this will help reduce some confusion..
* the messages I'm referring to..