君の瞳はまるでルビー - Ruby 関連まとめサイト

Sinatra - テンプレートによる文字列生成

最終更新: 2015-03-31 (火) 21:53:21 (2274d)
  • テンプレートファイルは標準で ./views ディレクトリに格納されていると想定されています。
    • テンプレートファイルは ./views ファイルに格納してください。
    • テンプレートファイルの格納ディレクトリを変えたい場合は set :views により変更できます。
  • テンプレートファイルを作成する以外の方法も用意されています。
ファイル内テンプレートtemplate メソッドで定義する方法です。
名前付きテンプレートソースファイルの最後(__END__ 以降)に指定された構文で定義する方法です。
  • ハンドラ・テンプレート間の情報のやり取りは、インスタンス変数を使う方法が一般的です。
  • layout という名前のテンプレートは特別扱いされます。
    • 他のテンプレートをラッピングする特別なテンプレートです。
    • 共通のヘッダー/フッターなどの定義できます。
    • layout テンプレート内で yield を実行し、その箇所に実際のテンプレートで生成した本文の文字列を埋め込めます。
<!-- layout.erb の例 -->
<html>
  <head>
    <title>タイトル</title>
  </head>
  <body>
    <%= yield %>
  </body>
</html>
  • テンプレートメソッドは単にテンプレートを使って文字列を生成するだけです。従って、別の用途にも使えます。
    • 送信メールのテンプレートとして利用する。
    • テンプレート内で別のテンプレートを利用する。
    • などなど。
<!-- テンプレート内で別のテンプレートを利用する例 -->
<html>
  <head>
    <title>2つのテンプレート部品を組み合わせてページを作る</title>
  </head>
  <body>
    <%= erb :template_parts1 %>
    <%= erb :template_parts2 %>
  </body>
</html>