diff options
author | Jonathan del Strother <jdelStrother@gmail.com> | 2017-06-22 13:10:21 +0100 |
---|---|---|
committer | Jonathan del Strother <jdelStrother@gmail.com> | 2017-06-23 09:42:57 +0100 |
commit | 2c0300389c3f6be00bf6c6b806332808a9400429 (patch) | |
tree | 8c00959f2de3c8bb380f418e36530f01337b1a17 /actionpack/test/dispatch/routing/route_set_test.rb | |
parent | 5de611afe63f9a30360d49db90e864d1d29dc283 (diff) | |
download | rails-2c0300389c3f6be00bf6c6b806332808a9400429.tar.gz rails-2c0300389c3f6be00bf6c6b806332808a9400429.tar.bz2 rails-2c0300389c3f6be00bf6c6b806332808a9400429.zip |
Fix missing formats in route-set URLs
Before this change, handle_positional_args would end up mutating @segment_keys
if inner_options included path components. Subsequent calls would then
be missing the implicit path components.
eg:
user_path(1, :json) # => "/users/1.json" (correct)
user_path(1, format: :json) # => "/users/1.json" (correct, but @segment_keys was mutated)
user_path(1, :json) # => "/users/1" (oh no!)
Diffstat (limited to 'actionpack/test/dispatch/routing/route_set_test.rb')
-rw-r--r-- | actionpack/test/dispatch/routing/route_set_test.rb | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/routing/route_set_test.rb b/actionpack/test/dispatch/routing/route_set_test.rb index ace35dda53..d6ecbda092 100644 --- a/actionpack/test/dispatch/routing/route_set_test.rb +++ b/actionpack/test/dispatch/routing/route_set_test.rb @@ -138,6 +138,15 @@ module ActionDispatch assert_equal "/a/users/1", url_helpers.user_path(1, foo: "a") end + test "implicit path components consistently return the same result" do + draw do + resources :users, to: SimpleApp.new("foo#index") + end + assert_equal "/users/1.json", url_helpers.user_path(1, :json) + assert_equal "/users/1.json", url_helpers.user_path(1, format: :json) + assert_equal "/users/1.json", url_helpers.user_path(1, :json) + end + private def draw(&block) @set.draw(&block) |