2012-09-03 77 views
2

我有一个Backbone.js应用程序,托管在Sinatra中并通过ERB脚本呈现。主干模板使用下划线模板功能,这样的变量是在ERB呈现像这样:使用HAML渲染“<%% =”

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

额外的“%”逃脱该变量的渲染,用单一的“%”,这是什么使得它下划线模板库将会启动。

我尝试以下,而升级到HAML:

#"<%= id %>" 

,没有工作。我如何用HAML完成同样的任务?

回答

2

首先,你不能使用#快捷方式有了这样的价值创造id,你必须做的很长的路要走:

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

默认情况下,Haml的会逃跑的属性,所以这会产生类似于:

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

这可能不是你想要的。您可以通过将:escape_attrs option设置为false来转义属性的转义。那么这将产生所需的输出:

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

请注意,此选项效果文档中的所有属性。

另一种方法是使用一组不同的delimiters in your templates。例如,您可以使用{{...}}与此:

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

现在Haml将不会转义属性值。