3

我正在使用 HAML 为 Backbone.js 应用程序生成模板。我需要能够<%= blah %>作为 html 属性插入:

%a{:href => "myresources/<% id %>"} My Resource

并让它输出

<a href='myresources/<%= id %>' >My Resource</a>

在 html 模板中。不幸的是,HAML 转义了 html 参数,让我留下了

<a href='#myresources/&lt;%= id %&gt;'>My Resource</a>

根据HAML Reference的“!” 运算符可用于对字符串进行转义,但不能在 HTML 属性中使用。

此外,我会使用纯文本来呈现锚标记,但由于锚标记是此特定视图的根,我失去了使用 HAML 的所有好处。

有什么帮助吗?

更新 我没有提到,但我使用 LiveReload 来实际监视我的文件系统并运行 haml 编译器,并且 LiveReload 中有一个设置可以禁用标签属性中的 HTML 转义。<head slap> 如果其他人在 LiveReload 之外遇到此问题,您还可以:escape_attrs在配置 HAML 设置时将该选项设置为 false。

4

2 回答 2

3

escape_attrs您可以使用HAML 配置中的选项将 HAML 配置为不转义标签属性。请参阅HAML 选项

于 2012-05-02T04:33:52.393 回答
0

您可以尝试使用 html_safe ,它是 String 对象的一种方法。这将转义变量语句中的 html 字符(例如 < ),并保留完整的下划线以在运行时进行评估:

%a{:href => "myresources/<% id %>".html_safe} My Resource

在使用 Underscore.js 对 html 属性内插值的回答中找到

于 2014-04-17T11:12:14.933 回答