【问题标题】:Escape / Ignore special characters in HAML attributes转义/忽略 HAML 属性中的特殊字符
【发布时间】:2011-05-02 04:45:08
【问题描述】:

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

有问题的行如下所示:

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

HAML 尝试编码 标签:

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

我不希望在这种情况下发生这种情况......有人知道该怎么做吗?

【问题讨论】:

    标签: javascript haml


    【解决方案1】:

    在下一个版本的 Haml (3.1) 中,将有一个 :escape_attrs 选项,您可以将其设置为 false 以防止这种情况发生。您还可以在命令行上传递--no-escape-attrs。要立即使用它,您可以使用 gem install haml --prerelease 安装 alpha 版本。

    【讨论】:

    • 可能对需要这个提示的新手(比如我)有用:1.将此添加到您的 Gemfile: gem 'haml', '&gt;=3.1.1' - 2.运行 bundle install - 3。将此添加到您的 config/environment.rb 文件中: Haml::Template.options[:escape_attrs] = false - 4。最后重启你的服务器。你也可以找到这个选项的文档here
    【解决方案2】:

    正如上面的@Natalie Weizenbaum 和@rchampourlier 所说,把它放在一个初始化器中

    config/initializers/haml.rb

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

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

    这个,因为空格:

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

    将渲染到不适用于模板的 this:

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

    解决方法是将点类(.input-group-addon)移到类中:text:

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

    这将呈现我们想要的:

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

    不使用空格 () 可能对您有用,但如果您需要任何需要空格的模板逻辑,请将 .dot-class 带入文本...

    【讨论】:

      【解决方案3】:

      来自this 的答案,使用带有 html_safe 的单独 ruby​​ 变量:

      - foo = "&#x0026".html_safe
      %a(href='/posts' data-icon=foo aria-hidden='true')
      

      【讨论】:

        猜你喜欢
        • 2013-12-11
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2017-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多