Sha256: 514f56701228b0c7af3a622df729f17aedc9e4d9554d04f45fa19824ab06acce
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
module Crumbs module ActionController module Base extend ActiveSupport::Concern included do before_filter :define_crumbs end protected def define_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 Rails.application.config.crumbs.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 { |referer| paths.include? referer[:path] } end module ClassMethods protected def crumb(action, name=nil, &block) controller = self.name.gsub('::', '/').gsub('Controller', '').underscore name = block_given? ? block : name Crumbs::Definitions.add controller.to_s, action.to_s, name end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
crumbs-1.1.2 | lib/crumbs/action_controller/base.rb |