2

私のWebアプリケーションでは、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);
}

完全に正常に動作し、 TextHereをエディターに配置します。この問題を引き起こしているここで何が起こっているのですか?

4

1 に答える 1

3

HTML文字列が含まれている場合@template、railsは自動的にそれをエスケープします。エスケープを防ぐにはraw、次のように追加してみてください。

<%= raw @template %>
于 2012-08-24T16:42:50.667 に答える