Module: BreadcrumbsHelper
- Defined in:
- app/helpers/breadcrumbs_helper.rb
Instance Method Summary collapse
- #assemble_crumb_url_parameter(params) ⇒ Object
- #calculate_breadcrumb_trail(trail) ⇒ Object
- #crumbs ⇒ Object
- #fetch_crumb_url(crumb) ⇒ Object
- #fetch_parameterized_crumb_url(crumb) ⇒ Object
- #fetch_parameters_recursive(params_hash, parent = nil) ⇒ Object
Instance Method Details
#assemble_crumb_url_parameter(params) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 |
# File 'app/helpers/breadcrumbs_helper.rb', line 78 def assemble_crumb_url_parameter(params) result = [] params.to_a.flatten.collect do |step| result << if step.is_a?(Hash) assemble_crumb_url_parameter(step) else step end end result end |
#calculate_breadcrumb_trail(trail) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/helpers/breadcrumbs_helper.rb', line 13 def (trail) = [] trail.each do |crummy| crumb = Breadcrumb.instance.crumbs[crummy] if not Breadcrumb.instance.last_crumb_linked? and crummy == trail.last << eval(%Q{"#{crumb.title}"}) else << link_to(eval(%Q{"#{crumb.title}"}), fetch_crumb_url(crumb)) end end .join(Breadcrumb.instance.delimiter) end |
#crumbs ⇒ Object
2 3 4 5 6 7 8 9 10 11 |
# File 'app/helpers/breadcrumbs_helper.rb', line 2 def crumbs (Breadcrumb.instance.trails || []).each do |trail| if trail.controller.to_sym == params[:controller].to_sym and trail.action.to_sym == params[:action].to_sym next unless trail.condition_met?(self) return (trail.trail) end end "" end |
#fetch_crumb_url(crumb) ⇒ Object
52 53 54 55 56 57 58 |
# File 'app/helpers/breadcrumbs_helper.rb', line 52 def fetch_crumb_url(crumb) if crumb.params fetch_parameterized_crumb_url(crumb) else send(crumb.url) end end |
#fetch_parameterized_crumb_url(crumb) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/helpers/breadcrumbs_helper.rb', line 26 def fetch_parameterized_crumb_url(crumb) case crumb.params when Hash if crumb.params[:params] send(crumb.url, fetch_parameters_recursive(crumb.params[:params])) else result = instance_eval("@#{assemble_crumb_url_parameter(crumb.params).join(".")}") send(crumb.url, result) end else if crumb.url == :current params else prams = crumb.params.collect do |name| case name when Symbol instance_variable_get("@#{name}") when String instance_eval(name) end end send(crumb.url, *prams) end end end |
#fetch_parameters_recursive(params_hash, parent = nil) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'app/helpers/breadcrumbs_helper.rb', line 60 def fetch_parameters_recursive(params_hash, parent = nil) parameters = {} case params_hash when Symbol parameters[params_hash] = (parent || params)[params_hash] when Array params_hash.each do |pram| parameter = (parent || params)[pram] parameters[pram] = parameter unless parameter.blank? end when Hash params_hash.each do |pram, nested| parameters[pram] = fetch_parameters_recursive(nested, params[pram]) end end parameters end |