diff options
author | Jeremy Daer <jeremydaer@gmail.com> | 2016-04-24 15:27:46 -0700 |
---|---|---|
committer | Jeremy Daer <jeremydaer@gmail.com> | 2016-04-24 15:27:46 -0700 |
commit | 643cac08a325243cab21d870c68a9c4088c58380 (patch) | |
tree | a4c4e006015254e7a8249ce323739511340535ec /actionpack/lib/action_dispatch/journey | |
parent | edc2b7718725016e988089b5fb6d6fb9d6e16882 (diff) | |
parent | 8ca8a2d773b942c4ea76baabe2df502a339d05b1 (diff) | |
download | rails-643cac08a325243cab21d870c68a9c4088c58380.tar.gz rails-643cac08a325243cab21d870c68a9c4088c58380.tar.bz2 rails-643cac08a325243cab21d870c68a9c4088c58380.zip |
Merge pull request #23103 from rails/refactor-handling-of-action-default
Refactor handling of :action default in routing
Diffstat (limited to 'actionpack/lib/action_dispatch/journey')
-rw-r--r-- | actionpack/lib/action_dispatch/journey/formatter.rb | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/journey/formatter.rb b/actionpack/lib/action_dispatch/journey/formatter.rb index 0323360faa..200477b002 100644 --- a/actionpack/lib/action_dispatch/journey/formatter.rb +++ b/actionpack/lib/action_dispatch/journey/formatter.rb @@ -32,8 +32,13 @@ module ActionDispatch defaults = route.defaults required_parts = route.required_parts - parameterized_parts.keep_if do |key, value| - (defaults[key].nil? && value.present?) || value.to_s != defaults[key].to_s || required_parts.include?(key) + + route.parts.reverse_each do |key| + break if defaults[key].nil? && parameterized_parts[key].present? + break if parameterized_parts[key].to_s != defaults[key].to_s + break if required_parts.include?(key) + + parameterized_parts.delete(key) end return [route.format(parameterized_parts), params] |