0

if文のようにルビ式に与える場合、正しいインデントの仕方がわかりません。

%ul
  %li foo
  - if true
    %li bar

上記のコードは機能しますが、2 つ%liが一致していません。これは私にとってエレガントではありません。同じレベルになります (つまり、両方とも %ul の子です)。

これを行うよりエレガントな方法はありますか?

4

2 に答える 2

1

erb:読みやすくするための書式設定に関心がある場合の最善の策は、フィルターを使用して haml をエスケープすることです。

%ul
  erb:
    <li>foo</li>
    <% if true %><li>bar</li><% end %>

残念ながら、このような状況では、インデントによってコードが読みにくくなりますが、ビューが大量のロジックに対して意味があるわけではないことを心に留めておいてください。可能な限り、コントローラーとヘルパーを使用してビューからロジックを引き出す必要があります。

于 2012-11-24T11:40:12.877 に答える
1

わかりました-ケースがこれより「少し」複雑な場合、私のコードで何が起こるかを次に示します。

list.haml:

%ul
  = render :partial => 'list_item', :locals => { value => 'foo', cond => true }
  = render :partial => 'list_item', :locals => { value => 'bar', cond => false }

_list_item.haml:

- if cond
  %li= value

しかし、これほど些細なケースでは、私はおそらくそうしないでしょう。ただし、ほとんどの場合、最終的にはそれほど重要ではなくなる傾向があります....このアプローチの短所は、実際に何が起こるかを確認するために別のファイルに移動する必要があることです。プロはDRYです。

于 2012-11-27T08:57:18.483 に答える