Skip to content

Commit 64d5785

Browse files
authored
Merge pull request rails#26131 from smellsblue/dont-fail-on-non-string
Remove dead code and ensure values are strings before calling gsub
2 parents fecc67d + efd59ab commit 64d5785

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

actionpack/lib/action_view/helpers/tag_helper.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ def tag_options(options, escape = true)
147147
elsif BOOLEAN_ATTRIBUTES.include?(key)
148148
attrs << %(#{key}="#{key}") if value
149149
elsif !value.nil?
150-
final_value = value.is_a?(Array) ? value.join(" ") : value
151150
attrs << tag_option(key, value, escape)
152151
end
153152
end
@@ -159,7 +158,7 @@ def tag_option(key, value, escape)
159158
if value.is_a?(Array)
160159
value = escape ? safe_join(value, " ") : value.join(" ")
161160
else
162-
value = escape ? ERB::Util.html_escape(value) : value
161+
value = escape ? ERB::Util.html_escape(value) : value.to_s
163162
end
164163
%(#{key}="#{value.gsub(/"/, '&quot;'.freeze)}")
165164
end

actionpack/test/template/tag_helper_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ def test_tag_options_accepts_blank_option
2929
assert_equal "<p included=\"\" />", tag("p", :included => '')
3030
end
3131

32+
def test_tag_options_accepts_symbol_option_when_not_escaping
33+
assert_equal "<p value=\"symbol\" />", tag("p", { :value => :symbol }, false, false)
34+
end
35+
36+
def test_tag_options_accepts_integer_option_when_not_escaping
37+
assert_equal "<p value=\"42\" />", tag("p", { :value => 42 }, false, false)
38+
end
39+
3240
def test_tag_options_converts_boolean_option
3341
assert_equal '<p disabled="disabled" multiple="multiple" readonly="readonly" />',
3442
tag("p", :disabled => true, :multiple => true, :readonly => true)

0 commit comments

Comments
 (0)