aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorAlex Robbin <alex.robbin@meyouhealth.com>2014-12-13 15:46:52 -0500
committerAlex Robbin <alex.robbin@meyouhealth.com>2014-12-13 15:52:41 -0500
commita842c5c12d4c1091c4e065cbdbc3adb58ce55bc9 (patch)
tree2e4116006311a45843af1c05ce3bce6031d3dd79 /actionpack
parent4c2aaca4dfd01223f6190c45f6582867dd84d6b4 (diff)
downloadrails-a842c5c12d4c1091c4e065cbdbc3adb58ce55bc9.tar.gz
rails-a842c5c12d4c1091c4e065cbdbc3adb58ce55bc9.tar.bz2
rails-a842c5c12d4c1091c4e065cbdbc3adb58ce55bc9.zip
allow URL helpers to work with optional scopes
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/CHANGELOG.md4
-rw-r--r--actionpack/lib/action_dispatch/routing/route_set.rb2
-rw-r--r--actionpack/test/dispatch/routing/route_set_test.rb12
3 files changed, 17 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md
index b68f2a28fe..3b02994459 100644
--- a/actionpack/CHANGELOG.md
+++ b/actionpack/CHANGELOG.md
@@ -1,3 +1,7 @@
+* Fixed usage of optional scopes in URL helpers.
+
+ *Alex Robbin*
+
* Fixed handling of positional url helper arguments when `format: false`.
Fixes #17819.
diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb
index 34cd06fd58..d7693bdcee 100644
--- a/actionpack/lib/action_dispatch/routing/route_set.rb
+++ b/actionpack/lib/action_dispatch/routing/route_set.rb
@@ -293,7 +293,7 @@ module ActionDispatch
path_params -= result.keys
end
path_params.each { |param|
- result[param] = inner_options[param] || args.shift
+ result[param] = inner_options.fetch(param) { args.shift }
}
end
diff --git a/actionpack/test/dispatch/routing/route_set_test.rb b/actionpack/test/dispatch/routing/route_set_test.rb
index 5a39119446..8bdb5733dd 100644
--- a/actionpack/test/dispatch/routing/route_set_test.rb
+++ b/actionpack/test/dispatch/routing/route_set_test.rb
@@ -160,6 +160,18 @@ module ActionDispatch
assert_equal '/foo/1/bar/2', url_helpers.foo_bar_path(2, foo_id: 1)
end
+ test "having an optional scope with resources" do
+ draw do
+ scope "(/:foo)" do
+ resources :users
+ end
+ end
+
+ assert_equal '/users/1', url_helpers.user_path(1)
+ assert_equal '/users/1', url_helpers.user_path(1, foo: nil)
+ assert_equal '/a/users/1', url_helpers.user_path(1, foo: 'a')
+ end
+
test "stringified controller and action keys are properly symbolized" do
draw do
root 'foo#bar'