diff options
author | Matthew Draper <matthew@trebex.net> | 2014-06-13 08:45:23 +0930 |
---|---|---|
committer | Matthew Draper <matthew@trebex.net> | 2014-06-13 08:52:44 +0930 |
commit | 6857415187810f1289068a448268264d0cf0844f (patch) | |
tree | dcda70dc09680f967e20c60462563b29aa3c0a42 /actionview/lib | |
parent | 4e009eec3dacf76d25f61402f86b2e474dadee8a (diff) | |
parent | bcab3f20dac0fe993e5d31bf6acef28ec54e658b (diff) | |
download | rails-6857415187810f1289068a448268264d0cf0844f.tar.gz rails-6857415187810f1289068a448268264d0cf0844f.tar.bz2 rails-6857415187810f1289068a448268264d0cf0844f.zip |
Merge pull request #15654 from pdg137/master
In tag helper, honor html_safe on arrays; also make safe_join more similar to Array.join
Diffstat (limited to 'actionview/lib')
-rw-r--r-- | actionview/lib/action_view/helpers/output_safety_helper.rb | 8 | ||||
-rw-r--r-- | actionview/lib/action_view/helpers/tag_helper.rb | 7 |
2 files changed, 9 insertions, 6 deletions
diff --git a/actionview/lib/action_view/helpers/output_safety_helper.rb b/actionview/lib/action_view/helpers/output_safety_helper.rb index e1f40011c0..b0d9c7c7f9 100644 --- a/actionview/lib/action_view/helpers/output_safety_helper.rb +++ b/actionview/lib/action_view/helpers/output_safety_helper.rb @@ -18,9 +18,9 @@ module ActionView #:nodoc: end # This method returns a html safe string similar to what <tt>Array#join</tt> - # would return. All items in the array, including the supplied separator, are - # html escaped unless they are html safe, and the returned string is marked - # as html safe. + # would return. The array is flattened, and all items, including + # the supplied separator, are html escaped unless they are html + # safe, and the returned string is marked as html safe. # # safe_join(["<p>foo</p>".html_safe, "<p>bar</p>"], "<br />") # # => "<p>foo</p><br /><p>bar</p>" @@ -31,7 +31,7 @@ module ActionView #:nodoc: def safe_join(array, sep=$,) sep = ERB::Util.unwrapped_html_escape(sep) - array.map { |i| ERB::Util.unwrapped_html_escape(i) }.join(sep).html_safe + array.flatten.map! { |i| ERB::Util.unwrapped_html_escape(i) }.join(sep).html_safe end end end diff --git a/actionview/lib/action_view/helpers/tag_helper.rb b/actionview/lib/action_view/helpers/tag_helper.rb index 9b9ca7d60d..35444bcfb4 100644 --- a/actionview/lib/action_view/helpers/tag_helper.rb +++ b/actionview/lib/action_view/helpers/tag_helper.rb @@ -173,8 +173,11 @@ module ActionView end def tag_option(key, value, escape) - value = value.join(" ") if value.is_a?(Array) - value = ERB::Util.unwrapped_html_escape(value) if escape + if value.is_a?(Array) + value = escape ? safe_join(value, " ") : value.join(" ") + else + value = escape ? ERB::Util.unwrapped_html_escape(value) : value + end %(#{key}="#{value}") end end |