22
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RailsでERBの代わりにSlimを利用する手順と、おすすめSlim学習方法

Last updated at Posted at 2017-02-18

はじめに

Railsでviewを作成する際、デフォルトのテンプレートエンジンとしてERBが利用されています。しかし、SlimやHamlなどはERBよりも簡潔にかけたりパフォーマンスに優れたりといったメリットがあります。
今回は特に評判のよいSlimをERBの代わりにRailsで利用するための手順を説明します。

新規アプリケーションでSlimを利用する場合

Gemfileにslim-railsを追加します。このgemを利用することでSlimが利用できるようになります。

Gemfile
+ gem 'slim-rails'

bundle installを実行します。

$ bundle

これで*.html.slimというファイルがviewのテンプレートエンジンとして認識され、*.html.erbのように利用することができます。

既に存在するerbファイルをslimに変換したい場合

既にいくつか*.html.erbというファイルを既に作成していたとします。
この場合はhtml2slimというgemを利用することで既存のerbファイルをslimファイルに変換することができます。

Gemfile
+ gem html2slim

bundle installを実行します。

$ bundle

以下のコマンドを実行することでerbファイルがslimファイルに変換されます。

$ bundle exec erb2slim app/views app/views

なお、以下のように-dを付けるとslimファイルに変換した後にerbファイルは削除されます。

$ bundle exec erb2slim app/views app/views -d

(余談)おすすめのSlim学習方法

Slimで書き始めると慣れないうちはERBで書いていたものはどうやって書くんだろうと思うことが何度もあると思います。
そこでおすすめの学習方法としては、scaffoldでRailsアプリを作成し、そこで作成されたerbファイルをslimファイルに変換し、適宜参考にするという方法です。

具体的には以下のような感じです。

まず、サンプルのアプリを作成します。

rails new scaffold-slim
cd scaffold-slim

Gemfileにテンプレートエンジン変換用gemを追加してインストールします。

Gemfile
+ gem 'html2slim'
$ bundle install --path vendor/bundler

適当なモデルをscaffoldで作成します。

$ bundle exec rails scaffold
$ bundle exec rails g scaffold Event title:string body:text

以下のコマンドを実行します。(erbファイルを削除してしまうとslimと比較ができないので-dオプションをつけていないです。)

$ bundle exec erb2slim app/views app/views

これでerbで書かれていたコードがslimではどのように書かれるのかを適宜参考にできるようになります。

参考

erbをslimに変換する
Rubyのテンプレートエンジンをerbからslimに変更する際に変えた事

22
22
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?