module Kaminari::Helpers::HelperMethods

Public Instance Methods

page_entries_info(collection, entry_name: nil) click to toggle source

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 196
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
paginate(scope, paginator_class: Kaminari::Helpers::Paginator, template: nil, **options) click to toggle source

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 111
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