在我的网络应用程序中,我使用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);
}
完美无缺,并在编辑器中放置文字在这里。这里发生了什么导致了这个问题?
答案 0 :(得分:3)
如果@template
包含HTML字符串,则rails会自动转义它。要防止转义,请尝试添加raw
,如下所示:
<%= raw @template %>