2

さて、私はこのアンダースコアテンプレート(簡略化されたバージョン)_template.html.erbを、Railsアプリのページのどこかからレンダリングしました:

<script type="text/html" id="mytemplate">
<div class="foo">
  <img src="{{= my_variable }}" />
</div>
</script>

次に、必要に応じて、他の場所で次のようにレンダリングします。

// change it to mustache-style because of defaults clashing with erb
_.templateSettings = {
  interpolate: /\{\{\=(.+?)\}\}/g,
  evaluate: /\{\{(.+?)\}\}/g
};

options = {
  my_variable: '/foo/bar/baz.img'
}

compiled = _.template($("#mytemplate").html());
$(compiled(options)).appendTo("#wherever");

これは、理論的には問題なく機能するはずです。ただし、このようなエラーがサーバーログやその他の場所でポップアップし始めた場合を除き、ブラウザは次のようなURLで404-ingしhttp://example.com/{{=%20my_variable%20}}ますhttp://example.com/foo/{{=%20my_variable%20}}

さて、私のは、それがタグであり、タグでラップされているにもかかわらず、imgブラウザがページからそれを試みているという事実と関係があるということですが、一体なぜかわかりません。これは、アンダースコアテンプレートをHTMLに埋め込むために多くの人が推奨する方法の1つです。また、サーバーログには、最新のChromeなどを使用している実際の人であることが示されているため、古いブラウザやロボットに起因するものではありません。GETscript

編集:もう少し調査した後、1。少数の人(一意のIP)にのみ発生します2.すべての人が最新バージョンのChromeを使用しています。それで、多分それはヘイワイヤーを失った拡張ですか?

何か案は?

4

1 に答える 1

0

type="text/html"を存在しないようなものtype="x-template"(または実際のもの)に変更する必要があります。

これは通常、キャッシュがすべてクリアされている場合に機能します。

本当に何もしない場合は、外部テンプレート(ロードするファイル) を使用できます。ただし、それらをインラインに保持したい場合は、問題のある文字をエスケープします(内部 JS char エンコーディングを使用)。これは JS によって同じように解析されますが、HTML パーサーによってキャッチされません。

次のツールを使用できます: http://mothereff.in/js-escapes ([ ASCII 以外の文字と印刷できない ASCII 文字のみをエスケープする] ボックスのチェックを外します)

それは次のようになります。

<script type="text/html" id="mytemplate">
<div class="foo">
  \x3Cimg src="{{= my_variable }}" />
</div>
</script>
于 2013-01-10T17:08:41.837 に答える