diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-09-05 10:59:28 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-09-05 10:59:46 -0700 |
commit | f443ae670de9ce9bcb8c00adde08405d2cfd70db (patch) | |
tree | c6267ebc41a55e993ad19c5f66e00b5dc6c61a0a /actionview | |
parent | f2400de8013c4d9798e7f69c44b1c987e719a5a4 (diff) | |
download | rails-f443ae670de9ce9bcb8c00adde08405d2cfd70db.tar.gz rails-f443ae670de9ce9bcb8c00adde08405d2cfd70db.tar.bz2 rails-f443ae670de9ce9bcb8c00adde08405d2cfd70db.zip |
Use ERB::Utils to percent encode `hfvalue` parts of mailto
`hfvalue` parts should always be percent encoded, so lets do that!
Revert "use path escaping for email addresses"
This reverts commit 21ffef38a5dc5a6a21f7e841aecab5b51f4fd185.
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/lib/action_view/helpers/url_helper.rb | 4 | ||||
-rw-r--r-- | actionview/test/template/url_helper_test.rb | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/actionview/lib/action_view/helpers/url_helper.rb b/actionview/lib/action_view/helpers/url_helper.rb index 477d676e21..5684de35e8 100644 --- a/actionview/lib/action_view/helpers/url_helper.rb +++ b/actionview/lib/action_view/helpers/url_helper.rb @@ -464,11 +464,11 @@ module ActionView extras = %w{ cc bcc body subject reply_to }.map! { |item| option = html_options.delete(item).presence || next - "#{item.dasherize}=#{Rack::Utils.escape_path(option)}" + "#{item.dasherize}=#{ERB::Util.url_encode(option)}" }.compact extras = extras.empty? ? '' : '?' + extras.join('&') - encoded_email_address = Rack::Utils.escape_path(email_address) + encoded_email_address = ERB::Util.url_encode(email_address).gsub("%40", "@") html_options["href"] = "mailto:#{encoded_email_address}#{extras}" content_tag("a".freeze, name || email_address, html_options, &block) diff --git a/actionview/test/template/url_helper_test.rb b/actionview/test/template/url_helper_test.rb index 2bd3098217..027b72b354 100644 --- a/actionview/test/template/url_helper_test.rb +++ b/actionview/test/template/url_helper_test.rb @@ -501,14 +501,14 @@ class UrlHelperTest < ActiveSupport::TestCase def test_mail_to_with_special_characters assert_dom_equal( - %(<a href="mailto:%23!$%25&'*+-/=?%5E_%60%7B%7D%7C~@example.org">#!$%&'*+-/=?^_`{}|~@example.org</a>), + %{<a href="mailto:%23%21%24%25%26%27%2A%2B-%2F%3D%3F%5E_%60%7B%7D%7C%7E@example.org">#!$%&'*+-/=?^_`{}|~@example.org</a>}, mail_to("#!$%&'*+-/=?^_`{}|~@example.org") ) end def test_mail_with_options assert_dom_equal( - %{<a href="mailto:me@example.com?cc=ccaddress@example.com&bcc=bccaddress@example.com&body=This%20is%20the%20body%20of%20the%20message.&subject=This%20is%20an%20example%20email&reply-to=foo@bar.com">My email</a>}, + %{<a href="mailto:me@example.com?cc=ccaddress%40example.com&bcc=bccaddress%40example.com&body=This%20is%20the%20body%20of%20the%20message.&subject=This%20is%20an%20example%20email&reply-to=foo%40bar.com">My email</a>}, mail_to("me@example.com", "My email", cc: "ccaddress@example.com", bcc: "bccaddress@example.com", subject: "This is an example email", body: "This is the body of the message.", reply_to: "foo@bar.com") ) @@ -533,7 +533,7 @@ class UrlHelperTest < ActiveSupport::TestCase end def test_mail_to_with_block_and_options - assert_dom_equal %{<a class="special" href="mailto:me@example.com?cc=ccaddress@example.com"><span>Email me</span></a>}, + assert_dom_equal %{<a class="special" href="mailto:me@example.com?cc=ccaddress%40example.com"><span>Email me</span></a>}, mail_to('me@example.com', cc: "ccaddress@example.com", class: "special") { content_tag(:span, 'Email me') } end |