Forum: Ruby on Rails help with pagination

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
861b0f573f69e2d9e834a3e75c8df408?d=identicon&s=25 charlie.caroff@gmail.com (Guest)
on 2007-05-30 01:51
(Received via mailing list)
I'm trying to follow the Agile Web Development example, and do
pagination.

I have a model SearchTerm, and another model Listing

Here's SearchTerm

class SearchTerm < ActiveRecord::Base
  has_many :listings
end

In my admin controller, if I do this

  def show
    @search_term = SearchTerm.find(params[:id])
  end

Then, with a given id related to a search term, in a view, I can
iterate through listings that are related to a given search term id,
like this:

<% @search_term.listings.undeleted.each do |listing| %>
<div><%= listing.title %></div>
<% end %>

But I can't figure out how to paginate these listings.  The Agile Web
Development example uses one table with no parent table.  If I do this
in my admin controller:

  def list
    @listing_pages, @listings = paginate :listings, :per_page => 25
  end

I can have a list.rhtml view, with this

<% for listing in @listings %>
<%= listing.title %>
<% end %>

Then if I navigate to http://0.0.0.0:3000/admin/list

I certainly get a paginated list of 25 listings, but of course they
are not related to a given search term id, in my search_terms table.
It just starts with the first listing in the listings table, and gives
the first 25.

How do I hook up pagination to the parent table?

Charlie
B1edc6a4aa373d980b49e600923df552?d=identicon&s=25 Douglas Shearer (dougal)
on 2007-05-30 01:59
charlie.caroff@gmail.com wrote:
> How do I hook up pagination to the parent table?
>
> Charlie

  def list
    @search_term = SearchTerm.find(params[:id])
    @listing_pages, @listings = paginate :listings, { :per_page => 25,
:conditions => [ 'search_term_id = ?', @search_term.id ] }
  end

That should do the trick. You can check out other options in the API
docs...
http://api.rubyonrails.org/classes/ActionControlle...

You can of course ommit the whole SearchTerm.find step, and put the
params[:id] straight into the :conditions option.

A lot of people will tell you the default pagination is a little slow in
the performance stakes, I tend to agree. Eventually you will find
yourself rolling your own, it works out a lot better in the long run.
861b0f573f69e2d9e834a3e75c8df408?d=identicon&s=25 charlie.caroff@gmail.com (Guest)
on 2007-05-30 02:03
(Received via mailing list)
Works, thanks!

On May 29, 4:59 pm, Douglas Shearer <rails-mailing-l...@andreas-s.net>
67b18e0e6de269790dee456a33ea1d31?d=identicon&s=25 Kevin Skoglund (Guest)
on 2007-05-30 05:36
(Received via mailing list)
Charlie,

I posted a long how-to-paginate article that might help you.

http://www.nullislove.com/2007/05/24/pagination-in-rails/

Best,
Kevin Skoglund
This topic is locked and can not be replied to.