Padrinoでwebアプリを書いている。Template engineにはhamlを使っているが、特定の条件の時だけ特定のクラスを付与したいようなことがある。例えばある期間以外ではリンクを無効にしておきたいなど。
- if some_condition
%a.wrapper.disabled{href: "some_URI"}
%span.content Some Content
- else
%a.wrapper{href: "some_URI"}
%span.content Some Content
DRYでない。Hamlではruby構文のスコープとタグのスコープが均しくインデントで制御されているのでちょっと面倒だった。試してみた所、{}の中で宣言したclassと外で宣言したclassはマージされるらしいので、こう書くとDRYになる。
%a.wrapper{href: "some_URI", class: [some_condition ? "disabled" : nil]}
%span.content Some Content