如何从rails中的代码中删除新行( )

How do I strip out a new line ( ) from my code in rails?

本文关键字:删除 新行 代码 rails      更新时间:2023-09-26

我目前在视图中有以下代码(jQuery),当title有一个字符时,它会破坏我的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',它将插入到您的Javascript中作为.html(""Winter is Coming", I say");),那么您也应该使用链接中建议的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'

我不确定你是否会得到更少的黑客

如果你仍然想有新的线路,你可以使用simple_format

即$("#t").html("#{simple_format title}");

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

尽管这也将其封装在<p>标签中。

您可以尝试:

$("#t").html("#{title.html_safe}".chomp);

或更短:

$("#t").html(title.html_safe.chomp);

这将删除尾随换行符。

如果要删除前导空格和尾随空格,可以将chomp替换为strip

如果您的文本中有换行符,gsub解决方案似乎是正确的解决方案,但您不需要#{...}:

$("#t").html(title.gsub("'n",""));

这么多错误答案。使用escape_javascript。