Module: ActionView::Helpers::PaginationHelper
- Defined in:
- lib/action_view/helpers/pagination_helper.rb
Overview
Provides methods for linking to ActionController::Pagination objects.
You can also build your links manually, like in this example:
<%= link_to “Previous page”, { :page => paginator.current.previous } if paginator.current.previous %>
<%= link_to “Next page”, { :page => paginator.current.next } of paginator.current.next =%>
Constant Summary collapse
- DEFAULT_OPTIONS =
{ :name => :page, :window_size => 2, :always_show_anchors => true, :link_to_current_page => false, :params => {} }
Instance Method Summary collapse
-
#pagination_links(paginator, options = {}) ⇒ Object
Creates a basic HTML link bar for the given
paginator
.
Instance Method Details
#pagination_links(paginator, options = {}) ⇒ Object
Creates a basic HTML link bar for the given paginator
.
options
are:
:name
-
the routing name for this paginator (defaults to
page
) :window_size
-
the number of pages to show around the current page (defaults to
2
) :always_show_anchors
-
whether or not the first and last pages should always be shown (defaults to
true
) :link_to_current_page
-
whether or not the current page should be linked to (defaults to
false
) :params
-
any additional routing parameters for page URLs
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/action_view/helpers/pagination_helper.rb', line 36 def pagination_links(paginator, ={}) .merge!(DEFAULT_OPTIONS) {|key, old, new| old} window_pages = paginator.current.window([:window_size]).pages return if window_pages.length <= 1 unless [:link_to_current_page] first, last = paginator.first, paginator.last returning html = '' do if [:always_show_anchors] and not window_pages[0].first? html << link_to(first.number, { [:name] => first }.update( [:params] )) html << ' ... ' if window_pages[0].number - first.number > 1 html << ' ' end window_pages.each do |page| if paginator.current == page && ![:link_to_current_page] html << page.number.to_s else html << link_to(page.number, { [:name] => page }.update( [:params] )) end html << ' ' end if [:always_show_anchors] && !window_pages.last.last? html << ' ... ' if last.number - window_pages[-1].number > 1 html << link_to(paginator.last.number, { [:name] => last }.update( [:params])) end end end |