代码之家  ›  专栏  ›  技术社区  ›  Ganesh Shankar

转义/忽略HAML属性中的特殊字符

  •  4
  • Ganesh Shankar  · 技术社区  · 14 年前

    我正在使用HAML制作HTML模板,但在编写属性时遇到了问题,这些属性将被JavaScript字符串模板替换。

    问题行如下:

    %div{:class => "<%= from_class %>"}
    

    Haml尝试对<%=%>标记进行编码:

    <div class="&lt;%= from_class %&gt;">
    

    我不想在这种情况下发生…有人知道怎么做吗?

    3 回复  |  直到 6 年前
        1
  •  4
  •   Natalie Weizenbaum    14 年前

    在下一个版本的HAML(3.1)中,将有一个 :escape_attrs 可以设置为的选项 false 为了防止这种情况。你也可以通过 --no-escape-attrs 在命令行上。要立即使用它,您可以安装alpha版本 gem install haml --prerelease .

        2
  •  0
  •   Community Dunja Lalic    7 年前

    this 答案是,使用一个单独的ruby变量和html_-safe:

    - foo = "&#x0026".html_safe
    %a(href='/posts' data-icon=foo aria-hidden='true')
    
        3
  •  0
  •   pixelearth    6 年前

    如上面的@natalie weizenbaum和@rchampourlier状态所示,将其放入初始值设定项中

    配置/初始值设定项/haml.rb

    Haml::Template.options[:escape_attrs] = false
    

    还要注意,因为haml决定了它的类顺序:

    这是因为空间:

    .input-group-addon{class: "<%= field_name %>"}
    

    将呈现不适用于模板的:

    <div class="%> <%= field_name input-group-addon">
    

    解决方案是将点类(.input group addon)移动到类中:文本:

    %div{class: "<%= field_name %> input-group-addon"} 
    

    它将呈现我们想要的:

    <div class="<%= field_name %> input-group-addon">
    

    您可以不使用空格(<%=field_name%>)但如果需要任何需要空格的模板逻辑,请将.dot类放入文本中…