aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/journey/formatter.rb
diff options
context:
space:
mode:
authorAndrew White <pixeltrix@users.noreply.github.com>2016-10-03 11:41:38 +0100
committerGitHub <noreply@github.com>2016-10-03 11:41:38 +0100
commit8058ece4feea7fb8feed1d0cfc44c6065c773127 (patch)
treeb549472a55b336e05bbad52b98630f360f53f63f /actionpack/lib/action_dispatch/journey/formatter.rb
parent2d6c14bca25c5629e431a802c3053bad1e378fcc (diff)
parent0b32e2dff353ceb9bc463787c5897ecae7302ab7 (diff)
downloadrails-8058ece4feea7fb8feed1d0cfc44c6065c773127.tar.gz
rails-8058ece4feea7fb8feed1d0cfc44c6065c773127.tar.bz2
rails-8058ece4feea7fb8feed1d0cfc44c6065c773127.zip
Merge pull request #26555 from chriscarter90/unmatched-constraint-routing-messages
Show an "unmatched constraints" error when params fail to match constraints
Diffstat (limited to 'actionpack/lib/action_dispatch/journey/formatter.rb')
-rw-r--r--actionpack/lib/action_dispatch/journey/formatter.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/journey/formatter.rb b/actionpack/lib/action_dispatch/journey/formatter.rb
index a289c34e8b..dc8b24b089 100644
--- a/actionpack/lib/action_dispatch/journey/formatter.rb
+++ b/actionpack/lib/action_dispatch/journey/formatter.rb
@@ -44,8 +44,12 @@ module ActionDispatch
return [route.format(parameterized_parts), params]
end
+ unmatched_keys = (missing_keys || []) & constraints.keys
+ missing_keys = (missing_keys || []) - unmatched_keys
+
message = "No route matches #{Hash[constraints.sort_by { |k,v| k.to_s }].inspect}"
- message << " missing required keys: #{missing_keys.sort.inspect}" if missing_keys && !missing_keys.empty?
+ message << ", missing required keys: #{missing_keys.sort.inspect}" if missing_keys && !missing_keys.empty?
+ message << ", possible unmatched constraints: #{unmatched_keys.sort.inspect}" if unmatched_keys && !unmatched_keys.empty?
raise ActionController::UrlGenerationError, message
end