Module: Ramaze::Helper::Paginate

Defined in:


Helper for pagination and pagination-navigation.

See #paginate for more information.

Defined Under Namespace

Classes: Paginator

Instance Method Summary (collapse)

Instance Method Details

- (Object) paginate(dataset, options = {})

Returns a new Paginator instance.

Note that the pagination relies on being inside a Ramaze request to gain necessary metadata about the page it resides on, you cannot use it outside of Ramaze yet.

The examples below are meant to be used within your controller or view.

Usage with Array:

data = (1..100).to_a
@pager = paginate(data, :limit => 30, :page => 2)
@pager.each{|e| puts(e) }

Usage with Sequel:

data = Article.filter(:public => true)
@pager = paginate(data, :limit => 5)
@pager.each{|e| puts(e)

Note that you must first extend Sequel with the pagination extension"

Sequel.extension :pagination

Customizing the classes to use for the various HTML elements of the page list can be done by passing a key :css to the list of options. In this hash you can set the following keys:

  • first, defaults to "first"
  • prev, defaults to "prev"
  • next, defaults to "next"
  • last, defaults to "last"
  • current, defaults to "current"
  • number, empty by default
  • disabled, defaults to "grey"

These options can also be specified globally in the trait :paginate as following:

class Posts < Ramaze::Controller
  map '/'

  trait :paginate => {
    :limit => 10,
    :var   => 'page',
    :css   => {
      :first => 'first_item',
      :prev  => 'prev_item',
      # and so on.


  • dataset (Sequel::Dataset|Array)

    May be a Sequel dataset or an Array

  • options (Hash) (defaults to: {})

    A hash containing custom options that takes precedence to ``trait[:paginate].

Options Hash (options):

  • :limit (Fixnum)

    The number of elements used when you call #each on the paginator

  • :var (String)

    The variable name being used in the request, this is helpful if you want to use two or more independent paginations on the same page.

  • :page (Fixnum)

    The page you are currently on, if not given it will be retrieved from current request variables. Defaults to 1 if neither exists.

  • :css (Hash)

    A hash containing various options that can be used to customize the HTML classes to use for the various page links.

# File 'lib/ramaze/helper/paginate.rb', line 100

def paginate(dataset, options = {})
  options = ancestral_trait[:paginate].merge(options)
  limit = options[:limit]
  var   = options[:var]
  page  = options[:page] || (request[var] || 1).to_i
  opts = {}
  opts.merge!({:css => options[:css]}) if options[:css], page, limit, var, opts)