Sha256: 90aec54f8a8b4afc9a6e797cf32251a3212af1cdb115004f64200c8ff511a621
Contents?: true
Size: 1.22 KB
Versions: 3
Compression:
Stored size: 1.22 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.to_i if page end end def around_generate(params, &block) page = params.delete(:page) yield.tap do |result| append_segment!(result, "page/#{page}") if append_page?(page) end end protected def append_page?(page) page && page.to_i != 1 end end end
Version data entries
3 entries across 3 versions & 1 rubygems