diff options
author | Godfrey Chan <godfreykfc@gmail.com> | 2014-11-22 21:54:01 -0800 |
---|---|---|
committer | Godfrey Chan <godfreykfc@gmail.com> | 2014-11-22 21:54:01 -0800 |
commit | ede97c6bb55049b31d6f5114cecd4d5105b80577 (patch) | |
tree | a586fc3af40bbcb892407f2fd2d70ea9e8d231e8 | |
parent | 165d27440b0775ef29ea8a8da700fab3683b9805 (diff) | |
parent | 46041c520809714b3937e7c79c2f220018a4a111 (diff) | |
download | rails-ede97c6bb55049b31d6f5114cecd4d5105b80577.tar.gz rails-ede97c6bb55049b31d6f5114cecd4d5105b80577.tar.bz2 rails-ede97c6bb55049b31d6f5114cecd4d5105b80577.zip |
Merge pull request #17715 from tgxworld/fix_nil_anchor
Anchor should not be appended when set to nil/false.
-rw-r--r-- | actionpack/lib/action_dispatch/http/url.rb | 4 | ||||
-rw-r--r-- | actionpack/test/controller/routing_test.rb | 3 | ||||
-rw-r--r-- | actionpack/test/controller/url_for_test.rb | 14 |
3 files changed, 20 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/http/url.rb b/actionpack/lib/action_dispatch/http/url.rb index 6b8dcaf497..22c0de2ac2 100644 --- a/actionpack/lib/action_dispatch/http/url.rb +++ b/actionpack/lib/action_dispatch/http/url.rb @@ -68,7 +68,9 @@ module ActionDispatch end def add_anchor(path, anchor) - path << "##{Journey::Router::Utils.escape_fragment(anchor.to_param.to_s)}" + if anchor + path << "##{Journey::Router::Utils.escape_fragment(anchor.to_param)}" + end end def extract_domain_from(host, tld_length) diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb index c18914cc8e..aca9f03748 100644 --- a/actionpack/test/controller/routing_test.rb +++ b/actionpack/test/controller/routing_test.rb @@ -1001,6 +1001,9 @@ class RouteSetTest < ActiveSupport::TestCase assert_equal "http://test.host/people?baz=bar#location", controller.send(:index_url, :baz => "bar", :anchor => 'location') + + assert_equal "http://test.host/people", controller.send(:index_url, anchor: nil) + assert_equal "http://test.host/people", controller.send(:index_url, anchor: false) end def test_named_route_url_method_with_port diff --git a/actionpack/test/controller/url_for_test.rb b/actionpack/test/controller/url_for_test.rb index c05cde87e4..f0eba17556 100644 --- a/actionpack/test/controller/url_for_test.rb +++ b/actionpack/test/controller/url_for_test.rb @@ -54,6 +54,20 @@ module AbstractController ) end + def test_nil_anchor + assert_equal( + '/c/a', + W.new.url_for(only_path: true, controller: 'c', action: 'a', anchor: nil) + ) + end + + def test_false_anchor + assert_equal( + '/c/a', + W.new.url_for(only_path: true, controller: 'c', action: 'a', anchor: false) + ) + end + def test_anchor_should_call_to_param assert_equal('/c/a#anchor', W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :anchor => Struct.new(:to_param).new('anchor')) |