我当前的 View 中有以下代码(jQuery),当标题有\n 字符时,它会破坏我的 js。
$("#t").html("#{title.html_safe}");
以下内容有效,但我认为这有点黑客:
$("#t").html("#{title.gsub("\n","")}");
最佳答案
您正在寻找的方法是 String#chomp 。它将删除字符串末尾的所有回车符。
$("#t").html("#{title.chomp}");
与往常一样,只有在完全确定 title
变量是安全的情况下才使用 html_safe
...尤其是当您在 Javascript 文件中使用它时!我没有将其包含在我的代码示例中,因为我无法让自己这样做。另外,请参阅 APIdock 上的注释关于在可能为 nil
的变量上使用 html_safe
的问题。我建议仅在字符串文字上使用它。
编辑:
如果您的 title
可能包含在 Javascript 中使用之前需要转义的引号(例如 '"Winter is Coming", I say'
它将作为 .html(""Winter is Coming", I say");
) 插入到您的 javascript 中,那么您还应该使用 escape_javascript
链接@mu 中建议的方法提供的太短。
$("#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”
。
关于javascript - 如何从 Rails 代码中删除新行 (\n)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396661/