テンプレート

テンプレートは、応答の本文を記述するファイルです。これは、ビューのコンテキストを囲み、テンプレートエンジンを使用してレンダリングされます。

 

ネーミング

簡単にするために、ビュー・クラス名とテンプレート・ファイル名の間に相関関係があります。これは、パスに名前の翻訳です:からDashboard::Indexdashboard/index

残りの部分は、複数のファイル拡張子で構成されています。最初のものはフォーマットに関連し、後者はテンプレートエンジンのものです。

指定した名前のビューに対してはWeb::Views::Dashboard::Index、テンプレートdashboard/index.[format].[engine]ディレクトリの下に少なくとも1つのテンプレートが存在する必要があります。

 

ネストされたテンプレート

オプションで他のテンプレート呼び出しrenderメソッドの一部をレンダリングするにはpartial

# Given a partial under:
#   templates/shared/_sidebar.html.erb
#
# In the layout template:
#   templates/application.html.erb
#

オプションrender付きの他のテンプレート呼び出しメソッドでテンプレートをレンダリングするにはtemplate

# Given a template under:
#   templates/articles/index.html.erb
#
# In the layout template:
#   templates/application.html.erb
#

 

カスタムテンプレート

別のテンプレートをビューに関連付けるには、使用できtemplateます。

# apps/web/views/dashboard/index.rb
module Web::Views::Dashboard
  class Index
    include Web::View
    template 'home/index'
  end
end

私たちの見解はapps/web/templates/home/index.*テンプレートを探します。

 

エンジン

花見はテンプレートファイル名の最後の拡張子を調べ、使用するエンジンを決定します(例:index.html.erbERbを使用します)。組み込みレンダリングエンジンはERbですが、Hanamiは無数のレンダリングエンジンをすぐにサポートします。

これはサポートされているエンジンの一覧です。これらは、指定された拡張子の優先度の高い順にリストされます。たとえば、ERubisがロードされている場合は、ERbよりもテンプレートをレンダリングする.erb方が優先されます。

Engine Extensions
Erubis erb, rhtml, erubis
ERb erb, rhtml
Redcarpet markdown, mkd, md
RDiscount markdown, mkd, md
Kramdown markdown, mkd, md
Maruku markdown, mkd, md
BlueCloth markdown, mkd, md
Asciidoctor ad, adoc, asciidoc
Builder builder
CSV rcsv
CoffeeScript coffee
WikiCloth wiki, mediawiki, mw
Creole wiki, creole
Etanni etn, etanni
Haml haml
Less less
Liquid liquid
Markaby mab
Nokogiri nokogiri
Plain html
RDoc rdoc
Radius radius
RedCloth textile
Sass sass
Scss scss
Slim slim
String str
Yajl yajl

別のテンプレートエンジンを使用するには、宝石をバンドルし、正しいファイル拡張子を使用する必要があります。

# app/web/templates/dashboard/index.html.haml
%h1 Dashboard

 

ディレクトリ

テンプレートはtemplates、アプリケーションのディレクトリの下にあるデフォルトのディレクトリにありapps/webます。この場所をカスタマイズしたい場合は、アプリケーションの設定を修正することができます。

# apps/web/application.rb
module Web
  class Application < Hanami::Application
    configure do
      # ...
      templates 'path/to/templates'
    end
  end
end

アプリケーションは、下のテンプレートを探しapps/web/path/to/templatesます。