为什么这会正确呈现(来自example.js.erb
文件):
alert(<%= 123 %>)
但不是这些中的任何一个:
alert(<%= "hello" %>)
alert(<%= p "hello" %>)
alert(<%= j "hello" %>)
当我查看控制台时,后者将文本字符串返回到jquery而没有引号,我认为这是问题的根源。
但是如何解决呢?
答案 0 :(得分:4)
第一个将变为alert(123)
,毫不奇怪地显示123
。
其余的将呈现alert(hello)
,这将打印变量hello
的内容,可能是空的。你想要的是其中之一:
alert("<%= "hello" %>")
alert(<%= hello.inspect %>)
alert(<%= JSON.dump("hello") %>)
(第三个需要一些要求)
答案 1 :(得分:0)
此外,这更安全:
alert(<% hello&.inspect&.html_safe %>)