前回のアンチパターン何が違うの、というとまあビューからロジックを抜き出すことには成功したとして、Railsからデフォルトで生成されるHTMLが果たしてちゃんと意味的に(HTMLの本義的に)mark upされてますかって言われるとちょっと怪しいですよね、って話。
HTMLのsemantisは以下の三点から成立している
- 全ての要素はその中身を表すid,class属性を持っている
- 正しいtagがついている
- 見かけの部分はCSSの領域でHTMLは感知しない
たとえばそれ自体が情報をもたない<div></div>
などはよく見られる光景だと思うが、あまり好ましいものではない。それらを防ぎながら、かつ綺麗に書くにはどうするか。
ソリューション:rails helperを使う
大体の必要な機能はRailsに初めからある。div_forやcontent_tag_forなどが例としてあげられていた。これにより煩雑なid,class付けが不要になり、なおかつちゃんとmark upできる。
結論:div_for
、content_tag_for
を使ってちゃんと意味付けしよう
ソリューション:hamlを使う
そもそもerbの記述自体が煩雑といえば煩雑ですよね、という話。Railsには他にも便利なテンプレートエンジンの候補がある。
比較エントリ
slimの簡単なチュートリアル
Hamlの簡単なチュートリアル
また、最近Hamlの記法を維持しながらパフォーマンスを向上させたfaml, hamlitというテンプレートエンジンもあるよう。
パフォーマンス比較エントリ
最近ではこのレベルのビューの話はフロントエンドエンジニアとの分業になっていることも多いかもしれないけど、個人でちょっとしたものを作る際のためにこのあたりのことも愛んでおくといいと思う。一度slilm,hamlあたりに慣れるとちょっとerbには戻れなさそうですね……