2

Sinatraでホストされ、ERBスクリプトを介してレンダリングされたBackbone.jsアプリケーションがあります。バックボーンテンプレートはアンダースコアテンプレート機能を使用しているため、変数は次のようにERBでレンダリングされます。

<div id="<%%= variable %>">

余分な「%」は、その変数のレンダリングをエスケープし、アンダースコアテンプレートライブラリが取得する単一の「%」でレンダリングします。

HAMLへのアップグレード中に次のことを試しました。

#"<%= id %>"

これはうまくいきませんでした。HAMLで同じタスクを実行するにはどうすればよいですか?

4

1 に答える 1

2

まず、#ショートカットを使用idしてそのような値でを作成することはできません。長い道のりでそれを行う必要があります。

%div{:id => "<%= id %>"}

デフォルトでは、Hamlは属性をエスケープするため、次のようになります。

<div id='&lt;%= id %&gt;'></div>

これはおそらくあなたが望むものではありません。:escape_attrsオプションをfalseに設定することにより、属性のエスケープをオフにすることができます。これにより、目的の出力が生成されます。

<div id='<%= id %>'></div>

このオプションは、ドキュメント内のすべての属性に影響することに注意してください。

別の方法は、テンプレートで別の区切り文字のセットを使用することです。たとえば{{...}}、これで使用できます。

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

これで、Hamlは属性値をエスケープしません。

于 2012-09-03T18:16:21.823 に答える