【问题标题】:Specify options for a filter in ruby HAML在 ruby​​ HAML 中指定过滤器的选项
【发布时间】:2014-02-22 09:41:20
【问题描述】:

有没有办法向 HAML 过滤器添加选项(HTML 属性)?

我想做这样的事情:

:javascript{:'data-turbolinks-eval' => 'false', :foo => 'bar'}
  if(someCondition){
    doSomething();
  }

结果是:

<script 'data-turbolinks-eval'='false' 'foo'='bar'>
  if(someCondition){
    doSomething();
  }
</script>

我能得到的最接近的是:

%script{:'data-turbolinks-eval' => 'false', :foo => 'bar'}
  if(someCondition){
  doSomething();
  }

缺点是你不能在 HAML 中缩进你的 JS,除非你使用 :javascript 过滤器。几行没关系,但很快就会变得混乱。

我很清楚,在大多数情况下,如果您最终在 HAML 模板中使用了一个复杂的脚本,这意味着您做错了什么,而这不是我要寻找的答案。

【问题讨论】:

    标签: javascript ruby filter haml indentation


    【解决方案1】:

    没有办法像这样将额外的属性传递给:javascript 过滤器。但是,您可以使用 :plain 过滤器和普通的 script 标记来允许缩进您的 JavaScript 代码:

    %script{:'data-turbolinks-eval' => 'false', :foo => 'bar'}
      :plain
        if(someCondition()) {
          doSomething();
        }
    

    产生:

    <script data-turbolinks-eval='false' foo='bar'>
      if(someCondition()) {
        doSomething();
      }
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2020-07-07
      相关资源
      最近更新 更多