lib/gretel/crumb.rb in gretel-3.0.7 vs lib/gretel/crumb.rb in gretel-3.0.8
- old
+ new
@@ -1,10 +1,16 @@
module Gretel
class Crumb
# Initializes a new crumb from the given +key+.
# It finds the breadcrumb created in +Gretel::Crumbs.layout+ and renders the block using the arguments supplied in +args+.
def initialize(context, key, *args)
+ if key.class.respond_to?(:model_name)
+ # Enables calling `breadcrumb @product` instead of `breadcrumb :product, @product`
+ args.unshift key
+ key = key.class.model_name.to_s.underscore.to_sym
+ end
+
block = Gretel::Crumbs.crumbs[key]
raise ArgumentError, "Breadcrumb :#{key} not found." unless block
@key = key
@context = context
instance_exec *args, &block
@@ -36,9 +42,12 @@
# If you supply a parent key and optional arguments, it will set the parent.
# If nothing is supplied, it will return the parent, if this has been set.
#
# Example:
# parent :category, category
+ #
+ # Or short, which will infer the key from the model's `model_name`:
+ # parent category
def parent(*args)
return @parent if args.empty?
key = args.shift
@parent = Gretel::Crumb.new(context, key, *args)