slimを使ってみよう

RailsではデフォルトのテンプレートエンジンはERBですが、他にもslimhamlがあります。
今回はslimの記法について見て行きます。

テンプレートエンジンとは

HTML画面を直感的にわかりやすいテンプレート形式で記述することができます。

必要gemの導入

slimでhtmlを書くためのgemをインストールします。
・slim-rails
hoge.html.slimのようにビューファイルの拡張子にslimが使えるようになります。
・html2slim
既存のerbファイルをslim形式に変換してくれます。
Gemfileに

gem 'slim-rails'
gem 'html2slim'

として

bundle install

これでgemがインストールできました。
サーバーは再起動しておきます。

erbをslimに変換

変換するためにターミナルでコマンドを入力します。

bundle exec erb2slim app/views

で元のerbファイルを残したまま変換されたhoge.html.slimファイルが作成されます。
元のerbを削除するには

bundle exec erb2slim app/views -d

とします。

slimの特徴

slimの特徴として
・<>、閉じタグがいらない
・<%= %> は =
・<% %> は -
・class指定 は .
・id指定 は #
・テキストは | の後に
コメントアウトは /
が挙げられると思います。
scaffoldアプリを作ったのでどんな感じになっているか見てみましょう。

p#notice
  = notice
h1
  | Users
table
  thead
    tr
      th
        | Name
      th
        | Email
      th[colspan="3"]
  tbody
    - @users.each do |user|
      tr
        td
          = user.name
        td
          = user.email
        td
          = link_to 'Show', user
        td
          = link_to 'Edit', edit_user_path(user)
        td
          = link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' }
br
= link_to 'New User', new_user_path

Image from Gyazo

まだ慣れていないので変な感じはしますが、コード量が減ってすっきりしていますね。
同名のerbファイルが残っているとerbの方が反映されるのでslimに移行するときはerbファイルは削除する必要があります。

最後に

慣れが必要ですが、覚えてしまえばerbより書くのも読むのも早くなりそうですね。
ただ、あえてslimからerbに戻した、という記事も見つけたので現場によってはデフォルトのerbのまま、ということもありそうです。
では今回は以上です。ありがとうございました。

参考サイト

【Ruby on Rails】テンプレートエンジンの種類(ERB,Haml,Slim) | プログラミングマガジン
【爆速で習得】Railsでslimを使う方法から基本文法まで - Qiita
【Rails】 slimの書き方をマスターしよう! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト