Amnesiac

仕事でちょっと詰まった箇所の健忘録。

HubDBとHubl関数でデータの入力個数に応じてクラスの出し分けをしたい


 HubDBで入力したデータを出力するときに、データの入力個数に応じてクラスの出し分けをしたい、ということがあると思います。

 ※データ数が1つの場合
 <div class="common_wrap A">
 <div class="common">hubDBのデータ1を出力</div>
 </div>

 

 ※データ数が2つの場合
 <div class="common_wrap B">
 <div class="common">hubDBのデータ1を出力</div>
 <div class="common">hubDBのデータ2を出力</div>
 </div>

 

 ※データ数が3つの場合
 <div class="common_wrap C">
 <div class="common">hubDBのデータ1を出力</div>
 <div class="common">hubDBのデータ2を出力</div>
 <div class="common">hubDBのデータ3を出力</div>
 </div>

 

やり方は複数あると思うのですが、配列とその個数を数える手法だと、[データ1,データ2,null]という具合に、空のデータはnullで出てくるので、良い手法が作れませんでした。
なので一番シンプルに、データが1~3つ、存在するかどうかを判断するコードが下記です。

{% if データ1 and not データ2 and not データ3 %}boxes1
{% elif データ1 and データ2 and not データ3 %}boxes2
{% elif データ1 and データ2 and データ3 %}boxes3
{% endif %}

1つの場合→2つの場合→3つの場合
という流れでコードを作るとAが1つある時点で処理が止まってしまい、2つ目の処理まで進みません。

なので、この書き方になりました。