チュートリアル
このチュートリアルに進む前に、1つ重要なことを明確にしておきたいと思います。このチュートリアルを見た後、ERBファイルの1つをHamlに変換してみましょう。ただ試すだけです。ファイルを1つ選択して、削除操作を実行します。ファイルが気に入らなければ保持する必要はありませんが、このチュートリアルを完了したら、とにかく1つのファイルで試してください。
Hamlは最初の20分は奇妙に感じるかもしれませんが、その後は速度が向上します。
はじめに
まず、Hamlを取得し、Gemをインストールしてください(このチュートリアルではRailsを使用していることを前提としていますが、他のフレームワークや単独のHamlにも同様に適用できます)。HamlはERBの代替手段として使用できます。つまり、app/views
フォルダ内の任意のファイルを、ファイルの拡張子を単純に変更するだけでHamlに切り替えることができます。
app/views/account/login.html.erb → app/views/account/login.html.haml
このページを表示すると、ERBがテンプレートを使用するのではなく、代わりにHamlによって処理されます。ERBとHamlを組み合わせて、サイト全体を操作できます。
変換方法
変換する基本的なERBから始めましょう。
ERB
<strong><%= item.title %></strong>
Haml
%strong= item.title
Hamlでは、タグはパーセント記号とタグの名前を使用して記述します。これは%strong
、%div
、%body
、%html
など、任意のタグで機能します。次に、タグの名前の後に=
があり、Hamlに右側のRubyコードを評価させ、戻り値をタグの内容として出力します。上記のERBとは異なり、Hamlは戻り値内の改行を自動的に検出して、タグを適切な形式で設定します。
属性の追加
単純なタグはすべてうまく機能しますが、タグに属性を追加するのはどうでしょうか。
HTML
<strong class="code" id="message">Hello, World!</strong>
Haml
%strong{:class => "code", :id => "message"} Hello, World!
属性は標準のRubyハッシュです。class
属性は「code」で、id
属性は「message」です。この例では=
を使用していないことに注意してください。そのため、「Hello, World!」は、Rubyコードではなく、通常の文字列として解釈されます。
class
とid
は一般的な属性であり、ほとんどのデザイナー(および開発者)はCSSに精通しているため、Hamlではこのタグをより簡単に定義できます。これらタグを説明するために、同様の表記を使用できます。
Haml
%strong.code#message Hello, World!
さらに、div
タグは一般的なので、タグ定義を省略し、%div
が既定値になるようにできます。
Haml
.content Hello, World!
HTML
<div class='content'>Hello, World!</div>
複雑さの向上
さらに少し複雑なものを考えてみましょう。
ERB
<div class='item' id='item<%= item.id %>'> <%= item.body %> </div>
とても基本的なものです。これは部分的なものの一部かもしれません。これを Haml に変換してみましょう。
Haml
.item{:id => "item#{item.id}"}= item.body
これは楽しいです!では、ネストは空白によって Haml で行われます。
ERB
<div id='content'> <div class='left column'> <h2>Welcome to our site!</h2> <p><%= print_information %></p> </div> <div class="right column"> <%= render :partial => "sidebar" %> </div> </div>
Haml
#content .left.column %h2 Welcome to our site! %p= print_information .right.column = render :partial => "sidebar"
それを見てください。あなたを笑顔にさせませんか?
学ぶべきことはたくさんあります。強くお勧めするのは、リファレンスを確認することです。Haml に追加した優れた小さなトリックで満たされており、サイトの構築をさらに楽しくします。