Hello,
I was looking to do pagination for collection and I found this bunch
of code.
def paginate_collection(collection, options = {})
default_options = {:per_page => 5, :page => 1}
options = default_options.merge(options)
pages = Paginator.new self, collection.size, options[:per_page],
options[:page]
first = pages.current.offset
last = [first + options[:per_page], collection.size].min
slice = collection[first...last]
return [pages, slice]
end
@country = WorkInCountry.find(params[:id])
@emp = @country.employees
@country_pages, @countries = paginate_collection @emp, :per_page => 5
in the view, it will display all the output and the number of pages,
once you click on next page, it will display the same thing as the
first page and so on.
any idea on how to fix this error.
Regards
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
On 5 Dec 2007, at 10:26, Shuaib85 wrote:> > Hello, > > I was looking to do pagination for collection and I found this bunch > of code. > > > def paginate_collection(collection, options = {}) > default_options = {:per_page => 5, :page => 1} > options = default_options.merge(options) > > pages = Paginator.new self, collection.size, options[:per_page], > options[:page] > first = pages.current.offset > last = [first + options[:per_page], collection.size].min > slice = collection[first...last] > return [pages, slice] > end > > @country = WorkInCountry.find(params[:id]) > @emp = @country.employees > @country_pages, @countries = paginate_collection @emp, :per_page => 5 > > > in the view, it will display all the output and the number of pages, > once you click on next page, it will display the same thing as the > first page and so on. >You need to tell it what page to display (ie, pass in :page => 5 to show the fifth page) Fred.> any idea on how to fix this error. > > Regards > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Well, I did try passing the page number and yet the problem is the
same.
I found this snap of code in different place and the same problem
appears
def paginate_collection(coll, options = {})
# Grab params and fix em up
per = options[:per_page].to_i
page = (params[:page] || 1).to_i
offset = (page - 1) * per
# Create a Paginator based on the collection data
pages = Paginator.new self, coll.size, per, page
# Grab the sub-set of the collection
paged = coll[offset..(offset + per - 1)]
return [pages, paged]
end
@country = WorkInCountry.find(params[:id])
@emp = @country.employees
@country_pages, @countries = paginate_collection @emp, :per_page => 5
is there another function built in rails that does the job?
Thanks a lot
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Hi,
copy the below statement in paginate_collection method
..................................................................
@page = params[:country_pages]
......................................................................
copy the below code in your view and run it. it will definitely work..
............................................................................................................................
<%= "Page: " + pagination_links(@country_pages, :params => {
:action
=> params["action"] || "index" }) + "<hr
/>" if @pages.page_count >
1%>
<%= link_to ''Previous page'', { :page =>
@country_pages.current.previous } if @country_pages.current.previous
%>
<%= link_to ''Next page'', { :page =>
@country_pages.current.next } if
@country_pages.current.next %>
....................................................................................................
On Dec 5 2007, 3:26 pm, Shuaib85
<shuaib.za...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Hello,
>
> I was looking to do pagination for collection and I found this bunch
> of code.
>
> def paginate_collection(collection, options = {})
> default_options = {:per_page => 5, :page => 1}
> options = default_options.merge(options)
>
> pages = Paginator.new self, collection.size, options[:per_page],
> options[:page]
> first = pages.current.offset
> last = [first + options[:per_page], collection.size].min
> slice = collection[first...last]
> return [pages, slice]
> end
>
> @country = WorkInCountry.find(params[:id])
> @emp = @country.employees
> @country_pages, @countries = paginate_collection @emp, :per_page => 5
>
> in the view, it will display all the output and the number of pages,
> once you click on next page, it will display the same thing as the
> first page and so on.
>
> any idea on how to fix this error.
>
> Regards
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
On 5 Dez. 2007, 13:23, Shuaib85 <shuaib.za...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Well, I did try passing the page number and yet the problem is the > same.You can pass the page number to the method on the controller side like this: @foo_pages, @foos = paginate_collection @bar.foos, :per_page => 3, :page => params[:page] A little bit more typing but it works. Greetings, Chris --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---