0

これが私の状況です。ページに 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>');

外側の引用符と競合しないように、最も内側のレベルの引用符をエスケープする必要があります。

4

2 に答える 2

2

これにはヘルパーがあります:

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

別名でもありますj

于 2012-08-24T20:58:36.567 に答える
0

うまくいくように見える非常に単純な解決策を考えました。' の出現を置き換えただけです&quot;

tinyMCE.activeEditor.setContent('<%= @template.gsub(/'/, "&quot;").html_safe %>');
于 2012-08-24T20:54:46.387 に答える