Retireving record for will_paginate

Hi, I am using "will_paginate" for pagination. For that I have written following code.

@selected_photos=BookPhoto.find(:all, :conditions=>["id=?", params[:id]]) @book_photos=@selected_photos.paginate :per_page => 3, :page => params[:page]

It is working fine. I have problem with this that every time it is retrieving all records satisfying the where condition. I don't want like that. It should fetch only three records from the database. How should I do that?

Any help will be appreciated.

Thanks, Tushar.

Hi Tushar,

not very much sure but may be following line can solve your problem.

BookPhoto.find(:all, :conditions=>[“id=?”,params[:id]]).paginate :per_page => 3, :page => params[:page]

Sandip R~

Hi Sandip, I think it will not solve my problem. It will again find all record and do paginate onto it. I don't think so it will add any limit on the retrieval of records depending on the page. Any ways thanks for your quick reply. Thanks, Tushar

Sandip Ransing wrote:

Hi Sandip, I think it will not solve my problem. It will again find all record and do paginate onto it. I don't think so it will add any limit on the retrieval of records depending on the page. Any ways thanks for your quick reply. Thanks, Tushar

It's because you are doing a find and then paginating the resulting array. You should be doing something like

BookPhoto.paginate(:conditions => ..., :page => params[:page], ...)

Fred