HAML中允许使用哪种Ruby/Erb:javascript过滤器?

nop*_*ole 6 javascript haml ruby-on-rails

似乎在HAML的:javascript过滤器内部,不允许使用Ruby代码,甚至不是注释.

所以这是不允许的:

:javascript
  - 1.upto(10) do |i|

:javascript
  -# just a comment not to show to public
Run Code Online (Sandbox Code Playgroud)

(有人说没有办法在:javascript过滤器中隐藏这样的评论 .这是真的吗?

但似乎唯一允许的是

:javascript
  $('#aDiv').html('#{a_ruby_variable}');
Run Code Online (Sandbox Code Playgroud)

只允许这个#{}.Ruby中没有其他东西是允许的吗?

Nat*_*aum 7

正如我在你的另一个问题上所说,过滤器(几乎)完全与Haml分开解析.唯一的例外是#{}:对于只是转换静态文本的过滤器(即根本不与Ruby环境交互的文本,所以除了:ruby和之外的大多数过滤器:erb),Haml将其添加为添加Ruby的便捷方式值.

如果您正在寻找与文本更复杂的Ruby集成,那么过滤器就不适合.它们意味着方便,而不是将JS放在模板中的最终解决方案.