Sha256: 3331d63f3c88c42b8556f75258d99fd5a20a088058c7795a5f140cb9c53cce64
Contents?: true
Size: 1.74 KB
Versions: 1
Compression:
Stored size: 1.74 KB
Contents
# encoding: utf-8 module Loaf module ControllerExtensions def self.included(base) base.extend ClassMethods base.send :include, InstanceMethods base.send :helper_method, :_breadcrumbs end module ClassMethods def add_breadcrumb(name, url, options = {}) before_filter(options) do |instance| # instance.send(:add_breadcrumb, _normalize_name(name), url) instance.send(:add_breadcrumb, name, url, options) end end private def _normalize_name(name=nil) case name when NilClass when Proc name.call when Symbol name.to_s else name end end def _process_url(url) end end module InstanceMethods # Add collection of nested breadcrumbs. # * <tt>collection</tt> - required collection of object for iteration # * <tt>field</tt> - required object attribute name # def add_breadcrumbs(collection, field, options={}) namespace = nil item_set = if _check_if_nested collection items = collection.pop namespace = collection items else collection end item_set.each do |item| add_breadcrumb item.send(field.to_sym), [ namespace, item ].flatten.compact end end def add_breadcrumb(name, url, options={}) _breadcrumbs << Loaf::Crumb.new(name, url) end def _breadcrumbs @_breadcrumbs ||= [] end def clear_crumbs _breadcrumbs.clear end private def _check_if_nested(collection) collection.last.is_a? Array end end # InstanceMethods end # ControllerExtensions end # Loaf
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
loaf-0.2.0 | lib/loaf/controller_extensions.rb |