Module: Ramaze::Helper::Paginate
- Includes:
- Traited
- Defined in:
- lib/ramaze/helper/paginate.rb
Overview
Helper for pagination and pagination-navigation.
See #paginate for more information.
Defined Under Namespace
Classes: Paginator
Instance Method Summary collapse
-
#paginate(dataset, options = {}) ⇒ Object
Returns a new Paginator instance.
Instance Method Details
#paginate(dataset, options = {}) ⇒ Object
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.
@pager.each{|e| puts(e) }
Usage with Sequel:
data = Article.filter(:public => true)
@pager = paginate(data, :limit => 5)
@pager.navigation
@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.
}
}
end
100 101 102 103 104 105 106 107 108 |
# File 'lib/ramaze/helper/paginate.rb', line 100 def paginate(dataset, = {}) = ancestral_trait[:paginate].merge() limit = [:limit] var = [:var] page = [:page] || (request[var] || 1).to_i opts = {} opts.merge!({:css => [:css]}) if [:css] Paginator.new(dataset, page, limit, var, opts) end |