content_tag使える子
あるある
repeat_yourself.html.haml
-# 親のタグの属性が違うだけだけどめんどくさいから、if文で2回書くべ
- if hoge
.article_hoge.hoge
%p.hogehgoe
hogeだったら、hogeクラスとgehoクラスを付けたい
- else
.article_hoge.not_hoge
%p.hogehoge
hogeだったら、hogeクラスとgehoクラスを付けたい
hamlでごちゃごちゃ書くこともできるけど、railsのcontent_tagを使えばいいと思うよ
dont_repeat_yourself.html.haml
- html_attr = {class:"article_hoge hoge"} #属性は別途hashで作っておく、helperとか、モデルとかで。class以外も使える dataとか
= content_tag(:div, html_attr) do
%p.hogehoge
hogeだったら、hogeくらすとgehoクラスを付けたい
if 文で一部しか違わないviewのblockを書きたくないし、見たくない。
modelによってpartialを分ける
repeat_yourself.html.haml
- if model == hoge
= render 'path/hoge'
- elsif model == geho
= render 'path/geho'
dont_repeat_yourself.html.haml
= render "path/#{model}"
CoCぽくファイル名とモデルで規約のようにして記述を減らす