tinymce setContent不能用于erb

时间:2012-08-24 16:38:17

标签: ruby-on-rails tinymce erb

在我的网络应用程序中,我使用tinymce编辑器允许用户创建HTML电子邮件。我已经包含了一个功能,他们可以将模板保存到数据库,这样他们就可以将它用于多个电子邮件,并随时随地访问它。但是当我试图加载存储在数据库中的内容时,回到编辑器中,它只是插入了html字符串。我想要它,所以html被渲染,所以他们可以看到模板,就像他们保存它时一样。

我认为这个问题与ERB有关,因为当我传入普通字符串时它工作正常,但是当我使用ERB来使用实例变量时,它只是将内容设置为html字符串,而不是格式正确。这是我的代码:

tinyMCE.init({
    mode : "textareas",
    theme : "advanced",
    ...
    oninit : "loadTemplate"
});

function loadTemplate() {
    tinyMCE.activeEditor.setContent("<%= @template %>");
}

这只会将<strong>Text Here</strong>放在编辑器中,但是:

tinyMCE.init({
    mode : "textareas",
    theme : "advanced",
    ...
    oninit : "loadTemplate"
});

function loadTemplate() {
    template = "<strong>Text Here</strong>";
    tinyMCE.activeEditor.setContent(template);
}

完美无缺,并在编辑器中放置文字在这里。这里发生了什么导致了这个问题?

1 个答案:

答案 0 :(得分:3)

如果@template包含HTML字符串,则rails会自动转义它。要防止转义,请尝试添加raw,如下所示:

<%= raw @template %>