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)