ビューの概要

ビューは、テンプレートのレンダリングを担当するオブジェクトです。

フルスタックのHanamiアプリケーションでは、着信HTTPリクエストがルータを経由してインスタンス化され、アクションの呼び出しが行われ、レスポンスのステータスコードとヘッダーが設定されます。最後のビットは本体で、対応するビューの出力によって設定されます。

 

シンプルなビュー

Hanamiは、ビューとテンプレートを作成するアクションのジェネレータを提供しています。

% hanami generate action web dashboard#index
    insert  apps/web/config/routes.rb
    create  spec/web/controllers/dashboard/index_spec.rb
    create  apps/web/controllers/dashboard/index.rb
    create  apps/web/views/dashboard/index.rb
    create  apps/web/templates/dashboard/index.html.erb
    create  spec/web/views/dashboard/index_spec.rb

これらのファイル名を見ると、私たちはと呼ばれるアクション持っているWeb::Controllers::Dashboard::Index(読ん命名アクションを)。我々の見解は同じような名前です:Web::Views::Dashboard::Index

ビューを見てみましょう:

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

 

ネーミング

このファイルは、アクション命名構造に似たモジュール宣言で始まります。唯一の違いは、Viewsモジュールの代わりにモジュールを使用することControllersです。
すべてのビューがその下にネストされます。
このモジュールは、アプリケーションの起動時にランタイムに生成されます。

与えられた名前のアプリケーションWebに対して、ビューは下にありWeb::Viewsます。

この対称性は実行時に非常に重要です。
アクションが完了した後、コントロールはフレームワークに渡され、一致するビューが検索されます。

Web::Controllers::Home::IndexHanamiは、要求を処理して
いる特定のアクションに対して、対応するWeb::Views::Home::Indexビューを探します。

 

ビューモジュール

すべての主な花見のコンポーネントは、ミックスインが含まれています。Hanamiコンテナは同じRubyプロセス内で複数のアプリケーションを実行できるため、これらの異なるコンポーネントの設定は分けておく必要があります。

この例では、指令がありinclude Web::Viewます。つまり、ビューはアプリケーションの設定Webに従って動作します。

与えられた指定されたアプリケーションWebに対して、includeするビューmixinはWeb::Viewです。