是否有帮助创建haml中的把手块?

时间:2012-08-20 14:16:44

标签: ruby-on-rails haml handlebars.js

因为在haml被编译为html之后评估了把手标签,并且把手计为haml中的平面文本你不能缩进逻辑

  {{#if misc}}
  %b Misc Products
  Total:
  {{misc_total}}
  {{#each misc}}
  {{price_charged}}
  {{notes}}
  {{/each}}
  {{/if}}

哪个难以阅读。 我做了一个铁轨助手,让它更好看*。

def handlebars_helper(helper, &block)
  raise ArgumentError, "Missing block" unless block_given?
  open = ActiveSupport::SafeBuffer.new("{{##{helper}}}") # helper opening
  open.safe_concat capture(&block)
  open.safe_concat("{{/#{helper.split.first}}}") # helper closing
  concat(open)
end

允许你编写看起来像这样的haml

  - handlebars_helper 'if misc' do
    %b Misc Products
    Total:
    {{misc_total}}
    - handlebars_helper 'each misc' do
      {{price_charged}}
      {{notes}}

以前是否已经完成,或者我有更好的方法吗?

*这个助手看起来有点乱,我对块子不太熟悉我该如何清理它?

1 个答案:

答案 0 :(得分:0)

如果您想使用HAML生成手柄代码,可以使用hamlbars,它将为您提供一些帮助以帮助缩进的帮助。不幸的是,你仍然会遇到围绕if / else的尴尬缩进。

我建议使用Emblem.js替代...语法更接近Slim而不是HAML,但是没有丑陋的帮助代码污染模板只是为了保留缩进。免责声明:我写了会徽。