Paginate an array

My controller code is as follows,

def index
end

def show
if params[:cat_id]
# cat_id is fetched from DB(a table with two columns id and name)
#mapped as cat_id in routes file
@articles = Article.find_all_by_name(params[:cat_id].gsub(/-/, ’
'))
render :action => :index
end
end

How to do pagination using will_paginate on this.

Here @articles is an array which fetches articles based on category
names. The output of this is as follows,

An index page with 3 category names and relevant articles under each
category. Now i need to apply will_paginate under each category in index
page. How to do this. Adding ".paginate(:page => params[:page],
:per_page =>3) returns undefined method ‘total pages’ since its an
array. Could you please advise me as to how pagination can be done.
Further, the url structure is article/categoryname/articlename (formed
using slug).

On Wednesday, 29 August 2012 08:07:18 UTC-5, Ruby-Forum.com User wrote:

#mapped as cat_id in routes file

An index page with 3 category names and relevant articles under each
category. Now i need to apply will_paginate under each category in index
page. How to do this. Adding ".paginate(:page => params[:page],
:per_page =>3) returns undefined method ‘total pages’ since its an
array. Could you please advise me as to how pagination can be done.
Further, the url structure is article/categoryname/articlename (formed
using slug).

Use where instead of the find_by helpers.

Article.where("name = ?", params[:cat_id].gsub(/\-/, '')).paginate({ :page => params[:page], :per_page =>3 })

find_all_by_* does it’s job literally, it finds them all and it defeats
the
logic in it’s name to add pagination to it. So if you want pagination
use
where.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs