Skip to content

Commit

Permalink
Make sure mail_to work with nil and SafeBuffer
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelfranca committed Nov 3, 2015
1 parent 23df880 commit 4986709
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
2 changes: 1 addition & 1 deletion actionview/lib/action_view/helpers/url_helper.rb
Expand Up @@ -471,7 +471,7 @@ def mail_to(email_address, name = nil, html_options = {}, &block)
}.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)
Expand Down
14 changes: 14 additions & 0 deletions actionview/test/template/url_helper_test.rb
Expand Up @@ -517,6 +517,20 @@ def test_mail_to_with_img
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
Expand Down

0 comments on commit 4986709

Please sign in to comment.