0

このチュートリアル(フランス語のみ) https://github.com/k33g/articles/blob/master/2011-08-14-BB-VIEWS.mdに沿ってフォローしています。これは、Backbonejsでアンダースコアテンプレートを使用します。

チュートリアルでは、このテンプレートを以下のインデックスファイルに配置するように指示されています。

      <script type="text/template" id="doc-template">
            <span><%= id %></span>
            <span><%= title %></span>
            <span><%= test %></span>
            <span><%= keywords %></span>
       </script>


   <div id='doc-container'></div>

index.html.erbに入れていますが、チュートリアルの作成者はrailsを使用していません。rails content_for helpersを使用してページ固有のコンテンツも含めるため、erbを使用する必要があります。

ページを表示しようとすると、未定義のローカル変数またはメソッドエラーが発生します

undefined local variable or method `id' for #<#<Class:0x007fd9c3a133b8>:0x007fd9c5066d90>

これらの変数をテンプレートから削除しても、コンテンツはページにレンダリングされません。

データをレンダリングするために私が間違っていることを誰かが説明できますか?

その他のバックボーンビュー関連コード

チュートリアルでは、ビューを初期化して適切なコンテナにレンダリングします...

        el : $('#doc-container'),
        initialize : function() {
            this.template = _.template($('#doc-template').html());


            _.bindAll(this, 'render');
            this.model.on('change', this.render);

        },

        render : function() {
            var renderedContent = this.template(this.model.toJSON());
            $(this.el).html(renderedContent);
            return this;
        }

アップデート

コレクションビューのチュートリアルの指示に従うと、同じ問題が発生します。アンダースコアの各メソッドに対してエラーがスローされます

undefined local variable or method `_' for #<#<Class:0x007fd9c3a133b8>:0x007fd9c2c78a78>

index.html.erbのテンプレート

<script type="text/template" id="docs-collection-template">
    <ol>
      <% _.each(docs, function(doc) { %>
        <li><%= doc.id %> : <%= doc.title %></li>
      <% }); %>
    </ol>
</script>
4

2 に答える 2

3

問題は、Underscore がテンプレート作成に ERB と同じ構文を使用しているため、競合していることです。Underscore に別の構文を使用するように指示する必要があります。アンダースコアのドキュメントから:

ERB スタイルの区切り記号が気に入らない場合は、Underscore のテンプレート設定を変更して、別の記号を使用して補間コードを引き立たせることができます。逐語的に補間する必要がある式に一致する補間正規表現、HTML エスケープ後に挿入する必要がある式に一致するエスケープ正規表現、および結果の文字列に挿入せずに評価する必要がある式に一致する評価正規表現を定義します。3 つの任意の組み合わせを定義または省略できます。たとえば、Mustache.js スタイルのテンプレートを実行します。

そのため、テンプレートをコンパイルする前に、JavaScript コードのどこかに次のコードを追加します。

_.templateSettings = {
    interpolate : /\{\{=(.+?)\}\}/g,
    escape : /\{\{-(.+?)\}\}/g,
    evaluate: /\{\{(.+?)\}\}/g,
};

次に、テンプレート内の がある場所で、に変更<% %>{{ }}、 に変更<%= %>{{= }}、 に変更<%- %>{{- }}ます。

于 2013-01-09T22:13:49.980 に答える
0

使用できます<%%= variable %>。これに対する Rails 出力は<%= variable %>.

于 2014-04-09T21:22:26.843 に答える