いきなりですが、みなさんはrailsのテンプレートエンジンに何を使っていますか?
僕はslimです。
公式ドキュメントはこちら
こちらのslimは<>や閉じタグが省略できてとてもシンプルに書くことができるんですよ。
ただ今回つまづいたところがあったので同じようにつまづいた人のために記事にしておこうと思いました。
#この記事で話すこと、しないこと
##話すこと
slimでつまづいたこと。
解決法
##話さないこと
slimの導入手順
slimの細かい記法
読者の皆さんはslimが書ける前提で進めていきます。
#つまづいた事象
僕がつまづいたのは下記のようなコードです。
もしAならhogeを表示すると言ったものです。
-if A
= hoge
さてお気付きのかたもいると思いますが、こちらif文が機能しません。
なぜなら上記のコードは下記のコードと同じだからです。
<% if A %>
<% end %>
<%= hoge %>
え、ならslimでif文書けないじゃんとお思いの方もいると思いますが大丈夫です。
解決方法はあります。
#解決方法
= hogeをネストさせるだけです。
-if A
= hoge
これだけでif文が機能するようになります。
#まとめ
slimはif文、each文などの閉じタグがなく、インデントで判断するので上記のような事象が発生するのですね。
しっかりネストさせないと「お、ネストされてない。ということはif文はネストされているこの行までだな」と、slimさんに判断されちゃう訳なんですよ。
ということで、みなさんslimで書く際はerbの時以上にインデントに気をつけましょう。