Make the Most of IT.

お酒と映画が好きなJava屋さんがRubyとか学んだこと感じたことをつらつらと

Hamlに入門して「. 」(ドット)がエラーになってハマった話

はじめに

現在復習ととポートフォリオ作成のためにRails Tutorialをもう一周しています。

そんな中でただ2周目をするのでは勿体無い気がしてerbではなくhamlを使ってみようと導入してみました。

右も左も分からない中、第3章の「3.2.2 静的なページの調整」でやらかしてしまったので備忘録として。

ハマったところ

お手本はerbなので脳内変換頑張ってやったコードがこちら。

お手本

<h1>Help</h1>
<p>
  Get help on the Ruby on Rails Tutorial at the
  <a href="https://railstutorial.jp/help">Rails Tutorial help page</a>.
  To get help on this sample app, see the
  <a href="https://railstutorial.jp/#ebook"><em>Ruby on Rails Tutorial</em>
  book</a>.
</p>

脳内変換したもの

%h1 Help
%p
  Get help on the Ruby on Rails Tutorial at the
  %a{ :href => 'https://railstutorial.jp/help'} 
    Rails Tutorial help page 
  . To get help on this sample app, see the
  %a{ :href => 'https://railstutorial.jp/#ebook'} 
    %em Ruby on Rails Tutorial
  book.

その結果

Illegal element: classes and ids must have values.

解決方法

グーグル先生に聞いたところによると、Hamlでは「.」でクラスを指定することができるみたい。

ということは上では「.」の後にすぐスペースがきているので「はよちゃんとしたクラス指定せんかい!」って怒ってるわけですね。

エラーメッセージ見てもクラスと値には必ず値を設定してねって書いてあるし。

ということで下記のように「.」をバックスラッシュでエスケープすることで解決しました!

%h1 Help
%p
  Get help on the Ruby on Rails Tutorial at the
  %a{ :href => 'https://railstutorial.jp/help'} 
    Rails Tutorial help page 
  \. To get help on this sample app, see the
  %a{ :href => 'https://railstutorial.jp/#ebook'} 
    %em Ruby on Rails Tutorial
  book.

Hamlは文量少ないしわかりやすくてとても便利!
もっと早く脳内変換できるようにがんばろー