2018年4月24日火曜日

Sinatra で erb を分割する方法

概要

Sinatra で erb を複数に分割する方法を紹介します
ヘッダやフッタ、サイドバーなど同じスタイルのページを作成するときに便利です

環境

  • macOS 10.13.2
  • Ruby 2.4.1p111
  • sinatra 2.0.1

ヘッダーファイル作成

  • vim views/header.erb
<head>
  <title>title</title>
  <link rel="stylesheet" type="text/css" href="../css/bulma.min.css">
  <script type="text/javascript" src="../js/fontawesome-all.min.js"></script>
</head>

css や js などを参照しています

ページ本体で読み込む

  • vim views/index.erb
<html>
<%= render(:erb, :header) %>
<body>
</body>
</html>

render メソッドをコールすることで他の erb ファイルを参照します

参照された側で変数を使いたい場合

Sinatra 側でインスタンス変数を定義した場合は、それをそのままどこの erb でも参照することができます
ただ、index.erb で生成した変数などを header.erb で参照したい場合は以下のように render メソッドをコールします

<%= render(:erb, :header, :locals => { :title => "hogefuga" }) %>

locals を使って変数を指定します
上記の場合であれば header.erb 側で以下の用に参照することができます

<title><%= title %></title>

最後に

Sinatra で erb を分割する方法を紹介しました
過去に haml を使う方法を紹介しましたが haml でも同じようなことができます
デフォルトが erb なので erb を使う場合には参考にしてください

0 件のコメント:

コメントを投稿