blob: fb6f28e5b4edbfa7895805183c2bab62f230afb7 [file] [log] [blame]
From 253ba56f5639ffb5ebe98d01c3515604c756a96a Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <takashikkbn@gmail.com>
Date: Thu, 27 Aug 2015 21:40:11 +0900
Subject: [PATCH] Fix mail_to to work well with Ruby 2.0
Ruby 2.0's ERB::Util.url_encode crashes ActiveSupport::SafeBuffer.
Related to 0789e06
---
actionview/lib/action_view/helpers/url_helper.rb | 2 +-
actionview/test/template/url_helper_test.rb | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/actionview/lib/action_view/helpers/url_helper.rb b/actionview/lib/action_view/helpers/url_helper.rb
index b724b9c..7485fc0 100644
--- a/actionview/lib/action_view/helpers/url_helper.rb
+++ b/actionview/lib/action_view/helpers/url_helper.rb
@@ -463,7 +463,7 @@ def mail_to(email_address, name = nil, html_options = {}, &block)
}.compact
extras = extras.empty? ? '' : '?' + extras.join('&')
- encoded_email_address = ERB::Util.url_encode(email_address).gsub("%40", "@")
+ encoded_email_address = ERB::Util.url_encode(email_address.to_str).gsub("%40", "@")
html_options["href"] = "mailto:#{encoded_email_address}#{extras}"
content_tag(:a, 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 6ca937a..9e09490 100644
--- a/actionview/test/template/url_helper_test.rb
+++ b/actionview/test/template/url_helper_test.rb
@@ -515,6 +515,13 @@ def test_mail_with_options
)
end
+ def test_mail_to_with_html_safe_string
+ assert_dom_equal(
+ %{<a href="mailto:david@loudthinking.com">david@loudthinking.com</a>},
+ mail_to("david@loudthinking.com".html_safe)
+ )
+ end
+
def test_mail_to_with_img
assert_dom_equal %{<a href="mailto:feedback@example.com"><img src="/feedback.png" /></a>},
mail_to('feedback@example.com', '<img src="/feedback.png" />'.html_safe)