【问题标题】:HAML -> Backbone Template, Unescaping HTML ParametersHAML -> 主干模板,非转义 HTML 参数
【发布时间】:2012-05-11 09:25:06
【问题描述】:

我正在使用 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 转义。

如果其他人在 LiveReload 之外遇到此问题,您还可以在配置 HAML 设置时将 :escape_attrs 选项设置为 false。

【问题讨论】:

  • 我没有使用 Rails,只有 HAML,所以这里没有可用的 html_safe 方法。

标签: ruby backbone.js haml


【解决方案1】:

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

【讨论】:

  • 这是我读过的最好的答案,但它确实会引发安全问题等。很高兴看到这个问题的一次性修复。
【解决方案2】:

您可以尝试使用 html_safe,它是 String 对象的一种方法。这将转义变量语句中的 html 字符(例如

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

Interpolate inside html attributes with Underscore.js的回答中找到

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多