そもそもSlimとは
Railsのテンプレートエンジンの種類の1つ
デフォルトではERBというテンプレートエンジンを採用しています。
※テンプレートエンジン:HTMLのテンプレートとそこに記述された動的な処理からHTMLを生成するための仕組みのこと
Slimを使うメリット
- インデントでツリー構造を表現しているので、ERBと比較してタグの開始と終了を記述しないため簡潔で読みやすい
- 他のテンプレートエンジンに比べて高速・軽量に動作する
Slimの導入
gem 'slim-rails'
gem 'html2slim'
$ bundle install
次にERB形式のファイルが存在しているので、erb2slimを用いてSlimに変更します。
あとERBファイルも削除します。
$ bundle exec erb2slim app/views/layouts/ --delete
config/application.rbにあるconfigを以下のように記述する。
module App
class Application < Rails::Application
config.generators.template_engine = :slim #slimに変更
end
end
基本的な記述方法
ERBがわかる方は、以下の内容を見ればなんとなく書けると思います。
| html.erb | html.slim |
|---|---|
| <%= %> | = |
| <% %> | - |
| id="hoge" | #hoge |
| class="hoge" | .hoge |
| / |
htmlタグの記述
h1 タイトル
p テキスト
a リンク
img src="https://hogeimage"
<h1>タイトル</h1>
<p>テキスト</p>
<a>リンク</a>
<img src="https://hogeimage" />
*テキストについての記述はこの後に詳細を書きます。
テキストの記述
テキストは |(パイプ)を使います。
メリットとして、|より後ろはテキストとして扱われるため、タグの横ではなく、タグの下に記述することで長文の場合に見やすくなる
p
|
テキストテキストテキストテキストテキストテキスト
<p>テキストテキストテキストテキストテキストテキスト</p>
【*注意点*】
タグのすぐ後ろに|をいれると、|もテキストとして認識されます。
p | テキスト
<p>| テキスト</p>
class, idの記述
先程の表を参考に「.」「#」を使ってclassとidを指定した記述をしてみます。
div.container
div.content1
h1#title タイトル
p.text1 テキスト1
div.content2
p.text2 テキスト2
<div class="container">
<div class="content1">
<h1 id="title">タイトル</h1>
<p class="text1">テキスト1</p>
</div>
<div class="content2">
<p class="text2">テキスト2</p>
</div>
</div>
if文の記述
endの記述忘れがなくなるから助かります。
- if current_user.nil?
li 新規登録
- else
li ログイン
<% if current_user.nil? %>
<li>新規登録</li>
<% else %>
<li>ログイン</li>
<% end %>
終わりに
私自身がまだまだSlimを触り始めたばかりですので、基礎的な記述方法しか扱えません。
今後も内容追加していきますので、お願い致します。