在javascript函数中插入多行字符串作为变量

时间:2012-11-29 17:15:22

标签: javascript jquery ruby-on-rails

我想通过RJS插入一个取自textarea的多行字符串。做:

$('#description').text('<%= simple_format description %>');

不起作用,因为它会生成如下内容:

$('#description').text('<p>first line
<br />second line</p>

<p>fourth line</p>');

因为字符串不在一行上,所以JS调用失败。那么现在simple_format正确地格式化了字符串,如何在RJS文件中的单行上打印它?

2 个答案:

答案 0 :(得分:2)

试试这个:

$('#description').text('<%= simple_format(description).gsub("\n", "\\n").gsub("\r", "\\r").gsub("\t", "\\t").gsub("'","\\'")  %>');

这将使用Javascript理解的转义序列替换换行符。类似于其他字符,如回车和制表符。此外,它将'字符串定义字符替换为带有转义序列的字符,以便诸如“It's mine”之类的字符串不会引起任何意外。

答案 1 :(得分:0)

您可以(最好)使用内置的escape_javascript()j()方法:

$('#description').text('<%= j(simple_format(description)) %>');

http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-escape_javascript