我有一个 ruby 变量,上面存储了一段 html 代码,例如:
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></head>
<body style="margin: 0; border: 0; padding: 0; font-family:'Times New Roman'">
<div style="text-align:center">
<div style="font-size:24px; font-family:'Times New Roman'">Jorge</div>
<div style="font-size:15px; font-family:'Times New Roman'">Constanza</div>
</div>
</body>
</html>
所以,我在 ruby 中有一个名为 html
的变量它存储了它......(实际上它在行尾有\n\r ),我需要将此 ruby 变量传递给 javascript var。所以在我的 template.html.erb 中我有以下内容:
<%= javascript_tag do %>
var previewHtml = "<%=html%>";
<% end %>
但这不起作用,因为我的 html 文件中呈现了以下内容:
var previewHtml = "<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></head>
<body style="margin: 0; border: 0; padding: 0; font-family:'Times New Roman'">
<div style="text-align:center">
<div style="font-size:24px; font-family:'Times New Roman'">First Name</div>
<div style="font-size:15px; font-family:'Times New Roman'">Last Name</div>
</div>
</body>
</html>";
我在 Firefox 中遇到以下错误:SyntaxError: unterminated string literal var previewHtml = "<html>
。这是有道理的......而且我不知道将这段 HTML 发送到 js。我需要稍后将其插入 iFrame 中。
我已经尝试执行以下操作:
<%= javascript_tag do %>
var previewHtml = "<%= @feed_template.html_template.gsub(/\r?\n/, '').html_safe %>";
<% end %>
呈现以下内容:
var previewHtml = "<html> <head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></head> <body style="margin: 0; border: 0; padding: 0; font-family:'Times New Roman'"> <div style="text-align:center"> <div style="font-size:24px; font-family:'Times New Roman'">Jorge</div> <div style="font-size:15px; font-family:'Times New Roman'">Constanza</div> </div> </body> </html>";
我得到了 SyntaxError: missing ; before statement
...
有什么帮助吗?
最佳答案
您也可以使用 escape_javascript
帮助程序,它的别名为 j
:
<%= javascript_tag do %>
var previewHtml = "<%= escape_javascript html %>";
<% end %>
或更短:
<%= javascript_tag do %>
var previewHtml = "<%= j html %>";
<% end %>
这会将所有特殊的 Javascript 字符替换为其匹配的转义序列,尤其是引号,这似乎给您带来了最大的麻烦。
渲染结果应如下所示:(注意反斜杠!)
var previewHtml = "<html>\n<head><meta http-equiv=\"Content-Type\" ... "
关于javascript - 将存储在 Ruby 变量中的 HTML block 存储在 javascript var 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25632228/