ハンドルバーの精神は、それが「ロジックレス」であるということです。これは、私たちがそれと戦っているように感じる場合もあれば、醜いネストされたif / elseロジックで終わる場合もあります。ヘルパーを書くことができます。多くの人々は、「より良い」条件演算子でハンドルバーを補強したり、それをコアの一部とすべきだと考えています。ただし、これの代わりに、
{{#if FriendStatus.IsFriend}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></div>
{{else}}
{{#if FriendStatus.FriendRequested}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></div>
{{else}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></div>
{{/if}}
{{/if}}
これを実現できるように、モデルに物事を配置したい場合があります。
{{#if is_friend }}
<div class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></div>
{{/if}}
{{#if is_not_friend_yet }}
<div class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></div>
{{/if}}
{{#if will_never_be_my_friend }}
<div class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></div>
{{/if}}
これらのフラグの1つだけが常にtrueであることを確認してください。これif/elsif/else
をビューで使用している場合、おそらく別の場所でも使用している可能性があるため、これらの変数が不必要になることはありません。
無駄を省きます。