質問

JavaScriptが多いRails 3アプリを構築しています。 underscore.jsを使用します。 http://embeddedjs.com/).

問題:EmbedDedJSはERB構文から大きく借用します。これにより、ERBテンプレートにEJSテンプレートを含めることで、ビューで問題が発生します。

ERBファイルに「非ERB」セクションを含める方法はありますか?これにより、ERBファイル内のEJSテンプレートを定義できます。現在、EJSテンプレートを含むファイルの生の内容を読み取り、ERBテンプレートに生文字列として出力するヘルパーがあるハックを使用しています。

役に立ちましたか?

解決

このトリックを使用して問題を解決します。

// Using custom tags to be able to use regular for templates in templates
var ejs = require('ejs');
ejs.open = '{{';
ejs.close = '}}';

// Using html extension for custom ejs tags
app.register('.html', ejs);

app.set('views', __dirname + '/views');
app.set('view engine', 'html');

これにより、<%%>に{{}}に変更され、JSが使用するテンプレートに<%%>を使用できます。クラシックなスタイルのテンプレート(<%%>)がないので、これは私に役立ちます。

それらの多くがある場合は、同じトリックをやりたいと思うかもしれませんが、underscore.jsテンプレートについて。

他のヒント

EJSを別々のファイルとして保存し、スクリプトタグ内のテキスト(ERBとして評価されない)としてレンダリングすることができます。

あなたのERBの内部部分:

<script id="my_awesome_template" type="text/x-ejs">
  <%= render :text => File.open("app/views/controller_name/_my_awesome_template.html.ejs").read %>
</script>`

JavaScriptファイルで:

new EJS({element: document.getElementById('my_awesome_template')}).render(data)

あなたのアンダースコア変数を逃れる:(あなたがERBに補間を望まないもの)

<%= foo %> becomes:

<%%= foo %>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top