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 } if 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 = {}, html_options = {}) ⇒ Object
Creates a basic HTML link bar for the given
paginator
. -
#pagination_links_each(paginator, options) ⇒ Object
Iterate through the pages of a given
paginator
, invoking a block for each page number that needs to be rendered as a link.
Instance Method Details
#pagination_links(paginator, options = {}, html_options = {}) ⇒ Object
Creates a basic HTML link bar for the given paginator
. html_options
are passed to link_to
.
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
37 38 39 40 41 42 43 44 45 |
# File 'lib/action_view/helpers/pagination_helper.rb', line 37 def pagination_links(paginator, ={}, ={}) name = [:name] || DEFAULT_OPTIONS[:name] params = ([:params] || DEFAULT_OPTIONS[:params]).clone pagination_links_each(paginator, ) do |n| params[name] = n link_to(n.to_s, params, ) end end |
#pagination_links_each(paginator, options) ⇒ Object
Iterate through the pages of a given paginator
, invoking a block for each page number that needs to be rendered as a link.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/action_view/helpers/pagination_helper.rb', line 49 def pagination_links_each(paginator, ) = DEFAULT_OPTIONS.merge() link_to_current_page = [:link_to_current_page] always_show_anchors = [:always_show_anchors] current_page = paginator.current_page window_pages = current_page.window([:window_size]).pages return if window_pages.length <= 1 unless link_to_current_page first, last = paginator.first, paginator.last html = '' if always_show_anchors and not (wp_first = window_pages[0]).first? html << yield(first.number) html << ' ... ' if wp_first.number - first.number > 1 html << ' ' end window_pages.each do |page| if current_page == page && !link_to_current_page html << page.number.to_s else html << yield(page.number) end html << ' ' end if always_show_anchors and not (wp_last = window_pages[-1]).last? html << ' ... ' if last.number - wp_last.number > 1 html << yield(last.number) end html end |