diff --git a/actionpack/lib/action_dispatch/journey/formatter.rb b/actionpack/lib/action_dispatch/journey/formatter.rb index 7d1f5ab7c9d1d5da26fe2579533e77f00ebdb3b3..ca47b94c7e77509ddf84773fe0cd4ad227455fc8 100644 --- a/actionpack/lib/action_dispatch/journey/formatter.rb +++ b/actionpack/lib/action_dispatch/journey/formatter.rb @@ -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 diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 9b1162998f5bafee154b013add8d81a91d35f808..e7773d80d384337c74ba61ca70d8ccb5bda35449 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -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? diff --git a/actionpack/test/journey/router_test.rb b/actionpack/test/journey/router_test.rb index fe0e3a975b0aeb5a9e82fd481e515dd266c7da5d..4e7374a7d4599669e478e318c49b29918c4e225b 100644 --- a/actionpack/test/journey/router_test.rb +++ b/actionpack/test/journey/router_test.rb @@ -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"