提交 d783ba20 编写于 作者: A Aaron Patterson

move optimize_helper? to the helper instance

上级 532e1228
...@@ -173,8 +173,13 @@ def self.create(route, options) ...@@ -173,8 +173,13 @@ def self.create(route, options)
end end
def initialize(route, options) def initialize(route, options)
@options = options @options = options
@segment_keys = route.segment_keys @segment_keys = route.segment_keys
@route = route
end
def optimize_helper?
@route.requirements.except(:controller, :action).empty?
end end
def url_else(t, args) def url_else(t, args)
...@@ -216,14 +221,17 @@ def define_url_helper(route, name, options) ...@@ -216,14 +221,17 @@ def define_url_helper(route, name, options)
# end # end
# end # end
#END_EVAL #END_EVAL
ohelp = optimize_helper?(route)
ohelper = optimized_helper(route)
arg_size = route.required_parts.size
helper = UrlHelper.create(route, options.dup) helper = UrlHelper.create(route, options.dup)
ohelp = helper.optimize_helper?
ohelper = optimized_helper(route)
arg_size = route.required_parts.size
@module.module_eval do @module.module_eval do
define_method(name) do |*args| define_method(name) do |*args|
#helper.call t, args
if ohelp && args.size == arg_size && !args.last.is_a?(Hash) && optimize_routes_generation? if ohelp && args.size == arg_size && !args.last.is_a?(Hash) && optimize_routes_generation?
helper.url_if(self, eval("\"#{ohelper}\"")) helper.url_if(self, eval("\"#{ohelper}\""))
else else
...@@ -235,11 +243,6 @@ def define_url_helper(route, name, options) ...@@ -235,11 +243,6 @@ def define_url_helper(route, name, options)
helpers << name helpers << name
end end
# Clause check about when we need to generate an optimized helper.
def optimize_helper?(route) #:nodoc:
route.requirements.except(:controller, :action).empty?
end
# Generates the interpolation to be used in the optimized helper. # Generates the interpolation to be used in the optimized helper.
def optimized_helper(route) def optimized_helper(route)
string_route = route.ast.to_s string_route = route.ast.to_s
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册