3
0

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 3 years have passed since last update.

【初心者】RailsでSlimを書いてみよう

Last updated at Posted at 2021-06-26

そもそもSlimとは

Railsのテンプレートエンジンの種類の1つ
デフォルトではERBというテンプレートエンジンを採用しています。
※テンプレートエンジン:HTMLのテンプレートとそこに記述された動的な処理からHTMLを生成するための仕組みのこと

Slimを使うメリット

  • インデントでツリー構造を表現しているので、ERBと比較してタグの開始と終了を記述しないため簡潔で読みやすい
  • 他のテンプレートエンジンに比べて高速・軽量に動作する

Slimの導入

Gemfile
gem 'slim-rails'
gem 'html2slim'
ターミナル
$ bundle install

次にERB形式のファイルが存在しているので、erb2slimを用いてSlimに変更します。
あとERBファイルも削除します。

ターミナル
$ bundle exec erb2slim app/views/layouts/ --delete

config/application.rbにあるconfigを以下のように記述する。

config/application.rb
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タグの記述

html.slim
h1 タイトル
p テキスト
a リンク
img src="https://hogeimage"
.html
<h1>タイトル</h1>
<p>テキスト</p>
<a>リンク</a>
<img src="https://hogeimage" />

*テキストについての記述はこの後に詳細を書きます。

テキストの記述

テキストは |(パイプ)を使います。
メリットとして、|より後ろはテキストとして扱われるため、タグの横ではなく、タグの下に記述することで長文の場合に見やすくなる

html.slim
p
  | 
  テキストテキストテキストテキストテキストテキスト
.html
<p>テキストテキストテキストテキストテキストテキスト</p>

【*注意点*】
タグのすぐ後ろに|をいれると、|もテキストとして認識されます。

html.slim
p | テキスト
.html
<p>| テキスト</p>

class, idの記述

先程の表を参考に「.」「#」を使ってclassとidを指定した記述をしてみます。

html.slim
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の記述忘れがなくなるから助かります。

html.erb
- if current_user.nil?
  li 新規登録
- else
  li ログイン
html.erb
<% if current_user.nil? %>
  <li>新規登録</li>
<% else %>
  <li>ログイン</li>
<% end %>

終わりに

私自身がまだまだSlimを触り始めたばかりですので、基礎的な記述方法しか扱えません。
今後も内容追加していきますので、お願い致します。

3
0
0

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?