1

ハンドルバー タグは、haml が html にコンパイルされた後に評価され、ハンドルバーは haml のプレーン テキストとしてカウントされるため、ロジックをインデントすることはできません。

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

これは読みにくいです。これをより見栄え良くするために Rails ヘルパーを作成しました*。

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}}

これは以前に行われたことがありますか、それともより良い方法がありますか?

*このヘルパーは少し乱雑に見えます。私はブロックに慣れていません。どうすればこれをクリーンアップできますか?

4

1 に答える 1

0

HAML を使用してハンドルバー コードを生成する場合は、 hamlbarsを使用できます。これにより、インデントを容易にするヘルパーがいくつか提供されます。残念ながら、if/else を囲むぎこちないインデントが残ることになります。

代わりにEmblem.jsをお勧めします... 構文は HAML よりも Slim に近いですが、インデントを維持するためだけにテンプレートを汚染する醜いヘルパー コードはありません。免責事項: エンブレムを書きました。

于 2013-02-13T22:08:15.310 に答える