未验证 提交 dd2acd5e 编写于 作者: A Aaron Patterson 提交者: GitHub

Merge pull request #39242 from rails/clean-up-sigs

Clean up the generate method signature
......@@ -15,12 +15,12 @@ def initialize(routes)
@cache = nil
end
def generate(name, options, path_parameters, parameterize = nil)
def generate(name, options, path_parameters)
constraints = path_parameters.merge(options)
missing_keys = nil
match_route(name, constraints) do |route|
parameterized_parts = extract_parameterized_parts(route, options, path_parameters, parameterize)
parameterized_parts = extract_parameterized_parts(route, options, path_parameters)
# Skip this route unless a name has been provided or it is a
# standard Rails route since we can't determine whether an options
......@@ -62,7 +62,7 @@ def clear
end
private
def extract_parameterized_parts(route, options, recall, parameterize = nil)
def extract_parameterized_parts(route, options, recall)
parameterized_parts = recall.merge(options)
keys_to_keep = route.parts.reverse_each.drop_while { |part|
......@@ -73,9 +73,11 @@ def extract_parameterized_parts(route, options, recall, parameterize = nil)
!keys_to_keep.include?(bad_key)
end
if parameterize
parameterized_parts.each do |k, v|
parameterized_parts[k] = parameterize.call(k, v)
parameterized_parts.each do |k, v|
if k == :controller
parameterized_parts[k] = v
else
parameterized_parts[k] = v.to_param
end
end
......
......@@ -650,14 +650,6 @@ def merge_defaults(options)
end
class Generator
PARAMETERIZE = lambda do |name, value|
if name == :controller
value
else
value.to_param
end
end
attr_reader :options, :recall, :set, :named_route
def initialize(named_route, options, recall, set)
......@@ -744,7 +736,7 @@ def normalize_controller!
# Generates a path from routes, returns [path, params].
# If no route is generated the formatter will raise ActionController::UrlGenerationError
def generate
@set.formatter.generate(named_route, options, recall, PARAMETERIZE)
@set.formatter.generate(named_route, options, recall)
end
def different_controller?
......
......@@ -224,22 +224,6 @@ def test_generate_slash
assert_equal "/", path
end
def test_generate_calls_param_proc
get "/:controller(/:action)", to: "foo#bar"
parameterized = []
params = [ [:controller, "tasks"],
[:action, "show"] ]
@formatter.generate(
nil,
Hash[params],
{},
lambda { |k, v| parameterized << [k, v]; v })
assert_equal params.map(&:to_s).sort, parameterized.map(&:to_s).sort
end
def test_generate_id
get "/:controller(/:action)", to: "foo#bar"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册