javascript - 如何从 Rails 代码中删除新行 (\n)?

标签 javascript jquery ruby-on-rails ruby

我当前的 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/

相关文章:

javascript - 当用户未提交表单而离开页面时如何显示警告消息

jquery - Openseadragon 中的 Canvas 右键单击

ruby-on-rails - 我的应用程序在 Heroku 上关闭,运行 "heroku run rails test"时没有错误,但运行 "heroku run rails console"时出现许多错误

javascript - 无法将 [autofocus ="autofocus"] 与 :input 结合起来

mysql - 无法在 Controller 中使用表单变量来保存选择的数据

ruby-on-rails - 使用 Ruby on Rails + PostgresQL 显示 2 周或更早的地点

javascript - ionic 2 : Add Class to Item While Removing Class From Other Items

javascript - 窗口 scrollY = 0 on Highcharts redraw()

javascript - 年份转换功能

javascript - Douglas Crockfords - 如何将基方法调用到继承类中