Module: Kaminari::ActionViewExtension
- Defined in:
- lib/kaminari/helpers/action_view_extension.rb
Overview
Helpers
Instance Method Summary collapse
-
#link_to_next_page(scope, name, options = {}, &block) ⇒ Object
A simple “Twitter like” pagination link that creates a link to the next page.
-
#page_entries_info(collection, options = {}) ⇒ Object
Renders a helpful message with numbers of displayed vs.
-
#paginate(scope, options = {}, &block) ⇒ Object
A helper that renders the pagination links.
Instance Method Details
permalink #link_to_next_page(scope, name, options = {}, &block) ⇒ Object
A simple “Twitter like” pagination link that creates a link to the next page.
Examples
Basic usage:
<%= link_to_next_page @items, 'Next Page' %>
Ajax:
<%= link_to_next_page @items, 'Next Page', :remote => true %>
By default, it renders nothing if there are no more results on the next page. You can customize this output by passing a block.
<%= link_to_next_page @users, 'Next Page' do %>
<span>No More Pages</span>
<% end %>
39 40 41 42 43 44 45 |
# File 'lib/kaminari/helpers/action_view_extension.rb', line 39 def link_to_next_page(scope, name, = {}, &block) params = .delete(:params) || {} param_name = .delete(:param_name) || Kaminari.config.param_name link_to_unless scope.last_page?, name, params.merge(param_name => (scope.current_page + 1)), .reverse_merge(:rel => 'next') do block.call if block end end |
permalink #page_entries_info(collection, options = {}) ⇒ Object
Renders a helpful message with numbers of displayed vs. total entries. Ported from mislav/will_paginate
Examples
Basic usage:
<%= page_entries_info @posts %>
#-> Displaying posts 6 - 10 of 26 in total
By default, the message will use the humanized class name of objects in collection: for instance, “project types” for ProjectType models. Override this with the :entry_name
parameter:
<%= page_entries_info @posts, :entry_name => 'item' %>
#-> Displaying items 6 - 10 of 26 in total
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/kaminari/helpers/action_view_extension.rb', line 62 def page_entries_info(collection, = {}) entry_name = [:entry_name] || (collection.empty?? 'entry' : collection.first.class.name.underscore.sub('_', ' ')) if collection.num_pages < 2 case collection.total_count when 0; "No #{entry_name.pluralize} found" when 1; "Displaying <b>1</b> #{entry_name}" else; "Displaying <b>all #{collection.total_count}</b> #{entry_name.pluralize}" end else offset = (collection.current_page - 1) * collection.limit_value %{Displaying #{entry_name.pluralize} <b>%d - %d</b> of <b>%d</b> in total} % [ offset + 1, offset + collection.count, collection.total_count ] end end |
permalink #paginate(scope, options = {}, &block) ⇒ Object
A helper that renders the pagination links.
<%= paginate @articles %>
Options
-
:window
- The “inner window” size (4 by default). -
:outer_window
- The “outer window” size (0 by default). -
:left
- The “left outer window” size (0 by default). -
:right
- The “right outer window” size (0 by default). -
:params
- url_for parameters for the links (:controller, :action, etc.) -
:param_name
- parameter name for page number in the links (:page by default) -
:remote
- Ajax? (false by default) -
:ANY_OTHER_VALUES
- Any other hash key & values would be directly passed into each tag as :locals value.
17 18 19 20 |
# File 'lib/kaminari/helpers/action_view_extension.rb', line 17 def paginate(scope, = {}, &block) paginator = Kaminari::Helpers::Paginator.new self, .reverse_merge(:current_page => scope.current_page, :num_pages => scope.num_pages, :per_page => scope.limit_value, :param_name => Kaminari.config.param_name, :remote => false) paginator.to_s end |