Paginate an array

17 views
Skip to first unread message

Sundar Ind

unread,
Aug 29, 2012, 9:06:40 AM8/29/12
to rubyonra...@googlegroups.com
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).

--
Posted via http://www.ruby-forum.com/.

Jordon Bedwell

unread,
Aug 31, 2012, 3:14:20 AM8/31/12
to rubyonra...@googlegroups.com
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.
Reply all
Reply to author
Forward
0 new messages