Sha256: 67de9a5a2a2e376abafdd417754725eee9e6350184dabe30ce589432f9d45701
Contents?: true
Size: 1.19 KB
Versions: 10
Compression:
Stored size: 1.19 KB
Contents
# The Uuid filter extracts an UUID segment from the beginning of the recognized # path and exposes the page parameter as params[:page]. When a path is generated # the filter adds the segments to the path accordingly if the page parameter is # passed to the url helper. # # incoming url: /d00fbbd1-82b6-4c1a-a57d-098d529d6854/product/1 # filtered url: /product/1 # params: params[:uuid] = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854' # # You can install the filter like this: # # # in config/routes.rb # Rails.application.routes.draw do # filter :uuid # end # # To make your named_route helpers or url_for add the uuid segment you can use: # # product_path(:uuid => uuid) # url_for(product, :uuid => uuid) module RoutingFilter class Uuid < Filter UUID_SEGMENT = %r(^/?([a-z\d]{8}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{12})(/)?) def around_recognize(path, env, &block) uuid = extract_segment!(UUID_SEGMENT, path) yield.tap do |params| params[:uuid] = uuid if uuid end end def around_generate(params, &block) uuid = params.delete(:uuid) yield.tap do |result| prepend_segment!(result, uuid) if uuid end end end end
Version data entries
10 entries across 10 versions & 4 rubygems