【问题标题】:Rendering "<%%=" with HAML使用 HAML 渲染 "<%%="
【发布时间】:2012-09-03 13:54:31
【问题描述】:

我有一个 Backbone.js 应用程序托管在 Sinatra 中,并通过 ERB 脚本呈现。主干模板使用下划线模板功能,因此变量在 ERB 中呈现如下:

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

额外的“%”转义了该变量的呈现,并使用单个“%”呈现它,这是下划线模板库将拾取的。

我在升级到 HAML 时尝试了以下操作:

#"<%= id %>"

这不起作用。如何使用 HAML 完成相同的任务?

【问题讨论】:

    标签: haml erb


    【解决方案1】:

    首先,您不能使用# 快捷方式来创建具有类似值的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 不会转义属性值了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-31
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      相关资源
      最近更新 更多