Skip to content

Commit

Permalink
Merge pull request #26133 from smellsblue/dont-fail-on-non-string
Browse files Browse the repository at this point in the history
Ensure values are strings before calling gsub
  • Loading branch information
rafaelfranca committed Aug 12, 2016
1 parent 1b2415f commit d40e5f0
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
2 changes: 1 addition & 1 deletion actionview/lib/action_view/helpers/tag_helper.rb
Expand Up @@ -187,7 +187,7 @@ def tag_option(key, value, escape)
if value.is_a?(Array) if value.is_a?(Array)
value = escape ? safe_join(value, " ".freeze) : value.join(" ".freeze) value = escape ? safe_join(value, " ".freeze) : value.join(" ".freeze)
else else
value = escape ? ERB::Util.unwrapped_html_escape(value) : value value = escape ? ERB::Util.unwrapped_html_escape(value) : value.to_s
end end
%(#{key}="#{value.gsub(/"/, '"'.freeze)}") %(#{key}="#{value.gsub(/"/, '"'.freeze)}")
end end
Expand Down
8 changes: 8 additions & 0 deletions actionview/test/template/tag_helper_test.rb
Expand Up @@ -29,6 +29,14 @@ def test_tag_options_accepts_blank_option
assert_equal "<p included=\"\" />", tag("p", :included => '') assert_equal "<p included=\"\" />", tag("p", :included => '')
end end


def test_tag_options_accepts_symbol_option_when_not_escaping
assert_equal "<p value=\"symbol\" />", tag("p", { value: :symbol }, false, false)
end

def test_tag_options_accepts_integer_option_when_not_escaping
assert_equal "<p value=\"42\" />", tag("p", { value: 42 }, false, false)
end

def test_tag_options_converts_boolean_option def test_tag_options_converts_boolean_option
assert_dom_equal '<p disabled="disabled" itemscope="itemscope" multiple="multiple" readonly="readonly" allowfullscreen="allowfullscreen" seamless="seamless" typemustmatch="typemustmatch" sortable="sortable" default="default" inert="inert" truespeed="truespeed" />', assert_dom_equal '<p disabled="disabled" itemscope="itemscope" multiple="multiple" readonly="readonly" allowfullscreen="allowfullscreen" seamless="seamless" typemustmatch="typemustmatch" sortable="sortable" default="default" inert="inert" truespeed="truespeed" />',
tag("p", :disabled => true, :itemscope => true, :multiple => true, :readonly => true, :allowfullscreen => true, :seamless => true, :typemustmatch => true, :sortable => true, :default => true, :inert => true, :truespeed => true) tag("p", :disabled => true, :itemscope => true, :multiple => true, :readonly => true, :allowfullscreen => true, :seamless => true, :typemustmatch => true, :sortable => true, :default => true, :inert => true, :truespeed => true)
Expand Down

0 comments on commit d40e5f0

Please sign in to comment.