Skip to content

Commit 013749e

Browse files
authored
Merge pull request rails#33564 from avit/escape_javascript_casting
Let escape_javascript handle conversion to string
2 parents 6fd9298 + dd0cfb0 commit 013749e

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

actionview/lib/action_view/helpers/javascript_helper.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ module JavaScriptHelper
2525
#
2626
# $('some_element').replaceWith('<%= j render 'some/element_template' %>');
2727
def escape_javascript(javascript)
28-
if javascript
29-
result = javascript.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) { |match| JS_ESCAPE_MAP[match] }
30-
javascript.html_safe? ? result.html_safe : result
28+
javascript = javascript.to_s
29+
if javascript.empty?
30+
result = ""
3131
else
32-
""
32+
result = javascript.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) { |match| JS_ESCAPE_MAP[match] }
3333
end
34+
javascript.html_safe? ? result.html_safe : result
3435
end
3536

3637
alias_method :j, :escape_javascript

actionview/test/template/javascript_helper_test.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ def teardown
2323

2424
def test_escape_javascript
2525
assert_equal "", escape_javascript(nil)
26+
assert_equal "123", escape_javascript(123)
27+
assert_equal "en", escape_javascript(:en)
28+
assert_equal "false", escape_javascript(false)
29+
assert_equal "true", escape_javascript(true)
2630
assert_equal %(This \\"thing\\" is really\\n netos\\'), escape_javascript(%(This "thing" is really\n netos'))
2731
assert_equal %(backslash\\\\test), escape_javascript(%(backslash\\test))
2832
assert_equal %(dont <\\/close> tags), escape_javascript(%(dont </close> tags))

0 commit comments

Comments
 (0)