はじめに
これまでテンプレートエンジンをRails標準のERBで書いていましたが、軽量かつスマートに書けるというSlimを導入しました。
環境
・Mac OS X EI Capitan (10.11.5)
・Ruby 2.3.0
・Rails 4.2.6
・Sublime Text 2 (エディタ)
まずテンプレートエンジンって何?
細かいことは置いておき、RailsでWebアプリケーションを書く際に、HTML内でRubyを使用したいときに使うものです。
Railsの有名なテンプレートエンジンには、ERB(標準)、Haml、Slimがあるそうです。
その中でも、軽くて速く、そして習得するのも容易と言われている Slim を導入することにしました。
ERB流の書き方
ERBを使用して、1から5までの数字をHTML内で列挙してみます。
<div class="container">
<h1>数字を列挙</h1>
<ul>
<% (1..5).each do |number| %>
<li>
<%= number %>
</li>
<% end %>
</ul>
</div>
</div>
ポイントは <% %> もしくは <%= %> で囲んだ部分でRubyのコードを書いていることです。
ERBでは既存のHTMLのコードに、簡単にRubyのコードを埋め込むことができます。
個人的な感想かも知れませんが、<% %> を毎回書くのがめんどくさいですし(%って打ちにくい位置にある)、普段 Python や Ruby などのスクリプト言語に慣れているため、<> を多用したコードは可読性が低いように感じます。
Slim流の書き方
まず、Slimを導入する前に、Slimで書けばどの程度すっきりできるか見ていきましょう。
div.container
h1 数字を列挙
ul
- (1..5).each do |number|
li = number
おぉ、かなりすっきりしました。
※ ここで、index.html.erb を削除するのをお忘れなく
Slimの導入
それでは、Slimを導入していきましょう。
まず、Gemfile に以下を追記します。
gem 'slim-rails' # slimの導入
あとは、追加したパッケージをインストールするだけですね。
$ bundle install
Slimの作法
ざっと Slim に必要な知識です。
・HTMLタグの <> は削除
・HTMLの閉じタグ(例:</div>)も削除
・idは#、classは. でタグの後に続ける
・Ruby の <% %> は - を前につける
・Ruby の <% end %> は不要
便利な補足
Sublime Text へ Slim のハイライトを追加
Sublime Text 上から command+Shift+P で install package を開き、Ruby Slim を検索して、インストールすればOKです。
メニューバーから View > Syntax > Ruby Slim を選択すれば、Slim で書いたコードがハイライトされます(超簡単で便利)
Railsで動作確認用のファイルを作成
コマンドラインから、サンプル用のコントローラを作成
コントローラ生成時に、indexのViewも同時に生成
$ rails g controller Samples index
app/views/samples/index.html.erb を上記のサンプルコードのように編集した後、コマンドラインからサーバーを立ち上げる
$ rails s
ブラウザから localhost:3000/samples/index にアクセスして、上記の動作確認を行う。
参考文献
・早い、簡単、生産的!? RailsのHTMLテンプレートエンジン Slim入門
・Railsのテンプレートエンジンの比較 erb vs slim vs haml
・Ruby製のテンプレートエンジン『Slim』に今更ながら入門してみたのでメモする