在ruby HAML中指定过滤器的选项

时间:2014-01-30 07:44:14

标签: javascript ruby filter haml indentation

有没有办法向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模板中使用了一个复杂的脚本,那就意味着你做错了什么,而这不是我正在寻找的答案。

1 个答案:

答案 0 :(得分:7)

无法像这样将额外属性传递给: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>
相关问题