module Kaminari::Helpers::HelperMethods
Public Instance Methods
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 %>
# File lib/kaminari/helpers/helper_methods.rb, line 166 def link_to_next_page(scope, name, **options) next_page = path_to_next_page(scope, options) options.except! :params, :param_name options[:rel] ||= 'next' if next_page link_to name, next_page, options elsif block_given? yield end end
A simple “Twitter like” pagination link that creates a link to the previous page.
Examples¶ ↑
Basic usage:
<%= link_to_previous_page @items, 'Previous Page' %>
Ajax:
<%= link_to_previous_page @items, 'Previous Page', remote: true %>
By default, it renders nothing if there are no more results on the previous page. You can customize this output by passing a block.
<%= link_to_previous_page @users, 'Previous Page' do %> <span>At the Beginning</span> <% end %>
# File lib/kaminari/helpers/helper_methods.rb, line 135 def link_to_previous_page(scope, name, **options) prev_page = path_to_prev_page(scope, options) options.except! :params, :param_name options[:rel] ||= 'prev' if prev_page link_to name, prev_page, options elsif block_given? yield end end
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. The
namespace will be cutted out and only the last name will be used. Override
this with the :entry_name
parameter:
<%= page_entries_info @posts, entry_name: 'item' %> #-> Displaying items 6 - 10 of 26 in total
# File lib/kaminari/helpers/helper_methods.rb, line 195 def page_entries_info(collection, entry_name: nil) entry_name = if entry_name entry_name.pluralize(collection.size, I18n.locale) else collection.entry_name(count: collection.size).downcase end if collection.total_pages < 2 t('helpers.page_entries_info.one_page.display_entries', entry_name: entry_name, count: collection.total_count) else from = collection.offset_value + 1 to = collection.offset_value + (collection.respond_to?(:records) ? collection.records : collection.to_a).size t('helpers.page_entries_info.more_pages.display_entries', entry_name: entry_name, first: from, last: to, total: collection.total_count) end.html_safe end
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) -
:paginator_class
- Specify a custom Paginator (Kaminari::Helpers::Paginator by default) -
:template
- Specify a custom template renderer for rendering the Paginator (receiver by default) -
:ANY_OTHER_VALUES
- Any other hash key & values would be directly passed into each tag as :locals value.
# File lib/kaminari/helpers/helper_methods.rb, line 110 def paginate(scope, paginator_class: Kaminari::Helpers::Paginator, template: nil, **options) options[:total_pages] ||= scope.total_pages options.reverse_merge! current_page: scope.current_page, per_page: scope.limit_value, remote: false paginator = paginator_class.new (template || self), **options paginator.to_s end