2

我想通过 RJS 插入从 textarea 获取的多行字符串。正在做:

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

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

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

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

因为字符串不在一行,所以 JS 调用失败。所以现在 simple_format 正确地格式化了字符串,我怎样才能将它全部打印在我的 RJS 文件中的一行上?

4

2 回答 2

2

尝试这个:

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

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

于 2012-11-29T17:18:06.903 回答
0

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

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

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

于 2015-02-07T05:04:33.610 回答