Make sure mail_to work with nil and SafeBuffer

This commit is contained in:
Rafael Mendonça França 2015-11-03 17:43:30 -02:00
parent 23df880908
commit 4986709fe0
2 changed files with 15 additions and 1 deletions

View File

@ -471,7 +471,7 @@ module ActionView
}.compact
extras = extras.empty? ? '' : '?' + ERB::Util.html_escape(extras.join('&'))
encoded_email_address = ERB::Util.url_encode(email_address.to_str).gsub("%40", "@")
encoded_email_address = ERB::Util.url_encode(email_address ? email_address.to_str : '').gsub("%40", "@")
html_options["href"] = "mailto:#{encoded_email_address}#{extras}".html_safe
content_tag(:a, name || email_address, html_options, &block)

View File

@ -517,6 +517,20 @@ class UrlHelperTest < ActiveSupport::TestCase
mail_to('feedback@example.com', '<img src="/feedback.png" />'.html_safe)
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_nil
assert_dom_equal(
%{<a href="mailto:"></a>},
mail_to(nil)
)
end
def test_mail_to_returns_html_safe_string
assert mail_to("david@loudthinking.com").html_safe?
end