Sha256: 5f8fa692d24443f0c1c3b1bf0ad253b6bd51141fbf16a59f8d022de522ca98a4

Contents?: true

Size: 1.29 KB

Versions: 6

Compression:

Stored size: 1.29 KB

Contents

module ShowBreadcrumb
  # Recursive function to lookup through parent breadcrumbs
  def collect_crumbs(obj, crumbs=[])
    crumbs << obj
    crumbs = collect_crumbs(obj.breadcrumb_parent, crumbs) unless obj.breadcrumb_parent.nil?
    crumbs
  end

  # View helper to generate breadcrumbs
  def breadcrumb(obj, action = nil, options = {})
    crumb_html = ""
    crumbs = collect_crumbs(obj)

    if options.has_key?(:forced_parent)
      crumb_link = url_for :controller => options[:forced_parent].class.to_s.underscore.pluralize, :action => "show", :id => options[:forced_parent].id
      crumb_html = link_to options[:forced_parent].breadcrumb_name, crumb_link
    elsif crumbs.length == 1
      crumb_link = url_for :controller => obj.class.to_s.underscore.pluralize
      crumb_html = link_to obj.class.model_name.human.pluralize, crumb_link
    end

    crumbs.reverse.each do |crumb_obj|
      unless crumb_obj.id.nil?
        crumb_html += ' > ' if crumb_html.length > 0
        crumb_link = url_for :controller => crumb_obj.class.to_s.underscore.pluralize, :action => "show", :id => crumb_obj.id
        crumb_html += link_to crumb_obj.breadcrumb_name, crumb_link
      end
    end

    crumb_html += ' > ' + action + ' ' + obj.class.model_name.human.titleize if !action.nil?
    crumb_html.html_safe
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
simple_breadcrumbs-1.1.0 lib/has_breadcrumb/show_breadcrumb.rb
simple_breadcrumbs-1.0.5 lib/has_breadcrumb/show_breadcrumb.rb
simple_breadcrumbs-1.0.4 lib/has_breadcrumb/show_breadcrumb.rb
simple_breadcrumbs-0.0.4 lib/has_breadcrumb/show_breadcrumb.rb
simple_breadcrumbs-0.0.2 lib/has_breadcrumb/show_breadcrumb.rb
simple_breadcrumbs-0.0.1 lib/has_breadcrumb/show_breadcrumb.rb