Module: KaminariRoutePrefix::ActionViewExtension
- Defined in:
- lib/kaminari_route_prefix/actionview/action_view_extension.rb
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.
-
#link_to_previous_page(scope, name, options = {}, &block) ⇒ Object
A simple “Twitter like” pagination link that creates a link to the previous page.
-
#page_entries_info(collection, options = {}) ⇒ Object
Renders a helpful message with numbers of displayed vs.
-
#paginate(scope, options = {}) ⇒ Object
A helper that renders the pagination links.
-
#rel_next_prev_link_tags(scope, options = {}) ⇒ Object
Renders rel=“next” and rel=“prev” links to be used in the head.
Instance Method Details
#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 %>
67 68 69 70 71 72 73 |
# File 'lib/kaminari_route_prefix/actionview/action_view_extension.rb', line 67 def link_to_next_page(scope, name, = {}, &block) next_page = Kaminari::Helpers::NextPage.new self, .reverse_merge(:current_page => scope.current_page) link_to_if scope.next_page.present?, name, next_page.url, .except(:params, :param_name).reverse_merge(:rel => 'next') do block.call if block end end |
#link_to_previous_page(scope, name, options = {}, &block) ⇒ Object
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 %>
42 43 44 45 46 47 48 |
# File 'lib/kaminari_route_prefix/actionview/action_view_extension.rb', line 42 def link_to_previous_page(scope, name, = {}, &block) prev_page = Kaminari::Helpers::PrevPage.new self, .reverse_merge(:current_page => scope.current_page) link_to_if scope.prev_page.present?, name, prev_page.url, .except(:params, :param_name).reverse_merge(:rel => 'prev') do block.call if block end end |
#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. 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
91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/kaminari_route_prefix/actionview/action_view_extension.rb', line 91 def page_entries_info(collection, = {}) entry_name = [:entry_name] || collection.entry_name entry_name = entry_name.pluralize unless collection.total_count == 1 if collection.total_pages < 2 t('helpers.page_entries_info.one_page.display_entries', :entry_name => entry_name, :count => collection.total_count) else first = collection.offset_value + 1 last = collection.last_page? ? collection.total_count : collection.offset_value + collection.limit_value t('helpers.page_entries_info.more_pages.display_entries', :entry_name => entry_name, :first => first, :last => last, :total => collection.total_count) end.html_safe end |
#paginate(scope, options = {}) ⇒ 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.
18 19 20 21 22 23 |
# File 'lib/kaminari_route_prefix/actionview/action_view_extension.rb', line 18 def paginate(scope, = {}) [:total_pages] ||= [:num_pages] || scope.total_pages paginator = Kaminari::Helpers::Paginator.new(self, .reverse_merge(:current_page => scope.current_page, :per_page => scope.limit_value, :remote => false)) paginator.to_s end |
#rel_next_prev_link_tags(scope, options = {}) ⇒ Object
Renders rel=“next” and rel=“prev” links to be used in the head.
Examples
Basic usage:
In head:
<head>
<title>My Website</title>
<%= yield :head %>
</head>
Somewhere in body:
<% content_for :head do %>
<%= rel_next_prev_link_tags @items %>
<% end %>
#-> <link rel="next" href="/items/page/3" /><link rel="prev" href="/items/page/1" />
122 123 124 125 126 127 128 129 130 |
# File 'lib/kaminari_route_prefix/actionview/action_view_extension.rb', line 122 def (scope, = {}) next_page = Kaminari::Helpers::NextPage.new self, .reverse_merge(:current_page => scope.current_page) prev_page = Kaminari::Helpers::PrevPage.new self, .reverse_merge(:current_page => scope.current_page) output = String.new output << tag(:link, :rel => "next", :href => next_page.url) if scope.next_page.present? output << tag(:link, :rel => "prev", :href => prev_page.url) if scope.prev_page.present? output.html_safe end |