我目前在 View 中有以下代码(jQuery),并且当title具有\ n字符时,它将破坏我的js。
$("#t").html("#{title.html_safe}");
下面的作品,但我认为这是一个hack:
$("#t").html("#{title.gsub("\n","")}");
最佳答案
您正在寻找的方法是String#chomp。它将删除字符串末尾的所有回车符。
$("#t").html("#{title.chomp}");
与往常一样,仅在完全确定
html_safe
变量安全的情况下才使用title
...尤其是因为您正在Javascript文件中使用它!我没有在代码示例中包含它,因为我无法带自己去做。另外,有关在可能是html_safe
的变量上使用nil
的信息,请参阅APIdock上的注释。我建议仅在字符串文字上使用它。编辑:
如果您的
title
有可能包含在Java语言中使用之前需要转义的引号(例如'"Winter is Coming", I say'
,它将作为.html(""Winter is Coming", I say");
插入到您的JavaScript中),那么您还应该使用@mu也建议使用 escape_javascript
方法简短提供。$("#t").html("#{j(title.chomp)}");
如果是
title = '"Winter is Coming"'
,则将产生以上代码。$("#t").html("\"Winter is Coming\"");
如果在标题字符串的中间还有回车的可能,那么
String#gsub
是可行的方法。$("#t").html("#{j(title.gsub(/[\n\r]/, " "))}");
我在
gsub
的第二个参数中添加了一个空格,以便'Winter\nis\nComing'
成为'Winter is Coming'
而不是'WinterisComing'
。