Sha256: 3f1d7fa33fcdaf831903936b946bc3269693e6e5a0a725d550297661a7454e29
Contents?: true
Size: 1.23 KB
Versions: 4
Compression:
Stored size: 1.23 KB
Contents
# The Pagination filter extracts segments matching /page/:page from the end of # the recognized url and exposes the page parameter as params[:page]. When a # url is generated the filter adds the segments to the url accordingly if the # page parameter is passed to the url helper. # # incoming url: /products/page/1 # filtered url: /products # params: params[:page] = 1 # # You can install the filter like this: # # # in config/routes.rb # Rails.application.routes.draw do # filter :pagination # end # # To make your named_route helpers or url_for add the pagination segments you # can use: # # products_path(:page => 1) # url_for(:products, :page => 1) module RoutingFilter class Pagination < Filter PAGINATION_SEGMENT = %r(/page/([\d]+)/?$) def around_recognize(path, env, &block) page = extract_segment!(PAGINATION_SEGMENT, path) yield.tap do |params| params[:page] = page if page end end def around_generate(params, &block) page = params.delete(:page) yield.tap do |result| result.update append_segment(result.url, "page/#{page}") if append_page?(page) end end protected def append_page?(page) page && page.to_i != 1 end end end
Version data entries
4 entries across 4 versions & 2 rubygems