如何在js.erb文件中呈现文本字符串

时间:2014-08-11 13:54:54

标签: ruby-on-rails erb

为什么这会正确呈现(来自example.js.erb文件):

alert(<%= 123 %>)

但不是这些中的任何一个:

alert(<%= "hello" %>)
alert(<%= p "hello" %>)
alert(<%= j "hello" %>)

当我查看控制台时,后者将文本字符串返回到jquery而没有引号,我认为这是问题的根源。

但是如何解决呢?

2 个答案:

答案 0 :(得分:4)

第一个将变为alert(123),毫不奇怪地显示123。 其余的将呈现alert(hello),这将打印变量hello的内容,可能是空的。你想要的是其中之一:

alert("<%= "hello" %>")
alert(<%= hello.inspect %>)
alert(<%= JSON.dump("hello") %>)

(第三个需要一些要求)

答案 1 :(得分:0)

此外,这更安全:

alert(<% hello&.inspect&.html_safe %>)