Sha256: 340b3d65150910139050dfefab8121aeaab6f371d6b4920f1e4871c6a66a1d51
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
module Crumbs module ActionController module Base extend ActiveSupport::Concern included do before_filter :set_crumbs end protected def set_crumbs paths = [request.path] paths.unshift File.dirname(paths.first) until paths.first == '/' referer = { base_url: request.base_url, path: request.path, fullpath: request.fullpath } if session[:referers].nil? or session[:referers].last[:base_url] != request.base_url session[:referers] = [referer] elsif request.path.starts_with? "#{session[:referers].last[:path]}/".squeeze('/') session[:referers] << referer elsif index = find_referer_index(paths) session[:referers] = session[:referers][0...index] + [referer] elsif session[:referers] = [referer] end paths.pop unless Crumbs.config.show_last @crumbs = [] paths.each do |path| params = Rails.application.routes.recognize_path("#{request.base_url}#{path}") rescue next if name = Crumbs::Definitions.find(params[:controller], params[:action], params) if index = find_referer_index(path) path = session[:referers][index][:fullpath] end @crumbs << { name: name, path: path } end end end def find_referer_index(paths) paths = [paths] unless paths.is_a? Array session[:referers].rindex do |referer| paths.include? referer[:path] end end module ClassMethods protected def crumb(action, name=nil, &block) Crumbs::Definitions.add controller_path, action.to_s, (block_given? ? block : name) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
crumbs-1.2.1 | lib/crumbs/action_controller/base.rb |