Module: BreadcrumbsHelper
- Defined in:
- app/helpers/breadcrumbs_helper.rb
Instance Method Summary collapse
- #assemble_crumb_title(crumb) ⇒ Object
- #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_title(crumb) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'app/helpers/breadcrumbs_helper.rb', line 92 def assemble_crumb_title(crumb) if crumb.title.is_a?(Hash) # We expect the name of the parameters with the code to evaluate i18n_params = {} crumb.title.each_pair do |key, value| i18n_params[key] = instance_eval("@#{assemble_crumb_url_parameter(value).join(".")}") end I18n.t(crumb.name, {:scope => "breadcrumbs"}.merge!(i18n_params)) elsif crumb.title.nil? I18n.t(crumb.name, :scope => "breadcrumbs") else crumb.title end end |
#assemble_crumb_url_parameter(params) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 |
# File 'app/helpers/breadcrumbs_helper.rb', line 80 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
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/helpers/breadcrumbs_helper.rb', line 15 def (trail) = [] trail.each do |crummy| crumb = Breadcrumb.instance.crumbs[crummy] if not Breadcrumb.instance.last_crumb_linked? and crummy == trail.last << eval(%Q{"#{assemble_crumb_title(crumb)}"}) else << link_to(eval(%Q{"#{assemble_crumb_title(crumb)}"}), fetch_crumb_url(crumb)) end end .join(Breadcrumb.instance.delimiter) end |
#crumbs ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 |
# 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) = (trail.trail) = .html_safe if .respond_to? :html_safe return end end "" end |
#fetch_crumb_url(crumb) ⇒ Object
54 55 56 57 58 59 60 |
# File 'app/helpers/breadcrumbs_helper.rb', line 54 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
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/helpers/breadcrumbs_helper.rb', line 28 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
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/helpers/breadcrumbs_helper.rb', line 62 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 |