私が構築するすべてのWebアプリで、この問題に遭遇します。HTML要素に条件付きでクラスを設定したい。たとえば<div>
、投稿のforは次のようになります。
<div class="post">...</div>
そして時々それはこのように見えます:
<div class="post even recent replied_to author_is_admin">...</div>
post
いくつかのロジックがそれがあるべきであると決定したので、後の各クラスはそこにあります。これへの最良の方法は何ですか?Rails + HAMLでは、私は次のようなことをしたことで罪を犯してきました。
-classes = []
-classes << cycle('even', 'odd')
-classes << 'recent' if post.recent?
-classes << 'replied_to' if post.replied_to?
-classes << 'author_is_admin' if post.author_is_admin?
.post{:class => classes.join(' ')}
...
それはきれいではありません、そして私はこれをすることができるようにヘルパーを使うためにそれを短くしました:
.post{:class => "#{cycle('even', 'odd')} #{post_classes}"}
それは私たちがいつもやっていることなので、それでも読みやすいはずです。このプロセスを短くて読みやすくする方法はありますか?