提交 86bcccf8 编写于 作者: T thedarkone

No need to create a separate lambda for each call.

上级 7b2d5181
......@@ -334,6 +334,19 @@ def add_route(app, conditions = {}, requirements = {}, defaults = {}, name = nil
end
class Generator #:nodoc:
PARAMETERIZE = {
:parameterize => lambda do |name, value|
if name == :controller
value
elsif value.is_a?(Array)
value.map { |v| Rack::Mount::Utils.escape_uri(v.to_param) }.join('/')
else
return nil unless param = value.to_param
param.split('/').map { |v| Rack::Mount::Utils.escape_uri(v) }.join("/")
end
end
}
attr_reader :options, :recall, :set, :named_route
def initialize(options, recall, set, extras = false)
......@@ -422,7 +435,7 @@ def handle_nil_action!
end
def generate
path, params = @set.set.generate(:path_info, named_route, options, recall, opts)
path, params = @set.set.generate(:path_info, named_route, options, recall, PARAMETERIZE)
raise_routing_error unless path
......@@ -436,20 +449,6 @@ def generate
raise_routing_error
end
def opts
parameterize = lambda do |name, value|
if name == :controller
value
elsif value.is_a?(Array)
value.map { |v| Rack::Mount::Utils.escape_uri(v.to_param) }.join('/')
else
return nil unless param = value.to_param
param.split('/').map { |v| Rack::Mount::Utils.escape_uri(v) }.join("/")
end
end
{:parameterize => parameterize}
end
def raise_routing_error
raise ActionController::RoutingError.new("No route matches #{options.inspect}")
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册