麻烦三层嵌套引号

时间:2012-08-24 20:46:22

标签: javascript ruby-on-rails escaping quotes

这是我的情况。我在页面上有一个带有javascript函数的rails视图。在该函数内部,我使用的是一段erb,需要输出一个字符串给该函数。我在erb中使用的变量包含一个html字符串。这个html字符串里面有各种元素属性的字符串。最后,由于css,元素属性的一些字符串也有字符串。

这就是我的javascript函数:

tinyMCE.activeEditor.setContent('<%= @template.html_safe %>');

这就是erb渲染后的样子:

tinyMCE.activeEditor.setContent('<table border="0" class="mceItemTable" width="440" style="height: 309px; "><tbody><tr><td style="text-align: center; background-color: #ff0000;" data-mce-style="text-align: center; background-color: #ff0000;"><span style="font-size: xx-large; font-family: 'arial black', 'avant garde'; color: rgb(255, 255, 0); ">THIS</span></td><td style="background-color: rgb(154, 205, 50); text-align: center; "><span style="font-size: xx-large; font-family: 'arial black', 'avant garde'; color: rgb(30, 144, 255); ">IS</span></td></tr><tr><td style="background-color: rgb(30, 144, 255); text-align: center; "><span style="font-size: xx-large; font-family: 'arial black', 'avant garde'; color: rgb(154, 205, 50); ">A</span></td><td style="background-color: rgb(255, 255, 0); text-align: center; "><span style="font-size: xx-large; font-family: 'arial black', 'avant garde'; color: rgb(255, 0, 0); ">TEST</span></td></tr></tbody></table><p><br data-mce-bogus="1"></p>');

在出现这种情况之前,这不会导致任何问题:

tinyMCE.activeEditor.setContent('<span style="font-family: 'arial black', 'avant garde'; color: rgb(255, 0, 0); ">TEST</span>');

我需要逃避最内层的引号,这样它们就不会与外引号冲突。

2 个答案:

答案 0 :(得分:2)

有一个帮手:

tinyMCE.activeEditor.setContent('<%= escape_javascript @template %>')

它也是j

的别名

答案 1 :(得分:0)

我只是想到了一个非常简单的解决方案,看起来很有效。我刚刚更换了&#39;与&quot;

tinyMCE.activeEditor.setContent('<%= @template.gsub(/'/, "&quot;").html_safe %>');