lib/arbre/patches.rb in express_templates-0.9.4 vs lib/arbre/patches.rb in express_templates-0.9.5
- old
+ new
@@ -23,10 +23,20 @@
tag
end
end
+ def possible_route_proxy(name)
+ if helpers.controller.class.parent &&
+ helpers.respond_to?(namespace = helpers.controller.class.parent.to_s.underscore)
+ if (route_proxy = helpers.send(namespace)).respond_to?(name)
+ return route_proxy
+ end
+ end
+ return nil
+ end
+
# Implements the method lookup chain. When you call a method that
# doesn't exist, we:
#
# 1. Try to call the method on the current DOM context
# 2. Return an assigned variable of the same name
@@ -38,10 +48,12 @@
current_arbre_element.send name, *args, &block
elsif assigns && assigns.has_key?(name)
assigns[name]
elsif helpers.respond_to?(name)
helper_method(name, *args, &block)
+ elsif route_proxy = possible_route_proxy(name)
+ route_proxy.send(name, *args, &block)
else
super
end
end
@@ -49,9 +61,11 @@
# everywhere we want to try to distinguish helpers that are almost
# always used as parameters to other methods such as path helpers
# and not add them as elements
def helper_method(name, *args, &block)
if name.match /_path$/
+ helpers.send(name, *args, &block)
+ elsif (const_get([name, 'engine'].join('/').classify) rescue nil)
helpers.send(name, *args, &block)
else
current_arbre_element.add_child helpers.send(name, *args, &block)
end
end
\ No newline at end of file