基本的な使用法

 

基本的な使用法

、前のセクションで、私たちはビューを生成しました。それを使ってみましょう。

 

デフォルトレンダリング

まず、対応するテンプレートを編集します。

# apps/web/templates/dashboard/index.html.erb

Dashboard

 

訪問すると/dashboard

Dashboard

 

ブラウザに表示されます。

再び命名規則を見てください。私たちの見解はWeb::Views::Dashboard::Index、テンプレートのファイル名は、ですがweb/templates/dashboard/index

特定のビューについてWeb::Views::Dashboard::Indexは、対応するテンプレートをで利用可能にしなければなりません(MUST)apps/web/templates/dashboard/index.html.erb

 

コンテキスト

テンプレートをレンダリングする際、テンプレートによって要求された変数ルックアップはビューコンテキストに移動します

# apps/web/templates/dashboard/index.html.erb

<%= title %>

 

補間された変数を追加してテンプレートを修正すると、そのビューはそれを提供する責任があります。

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

    def title
      'Dashboard'
    end
  end
end

このビュー#titleは、具体的な方法として実装することで対応します。私たちは

Dashboard

 

いつ私たちが訪れるのを見る/dashboard

 

曝露

私たちの文脈のための別のソースがあります:暴露。彼らは行動から来るペイロードです。

# apps/web/controllers/dashboard/index.rb
module Web::Controllers::Dashboard
  class Index
    include Web::Action
    expose :title

    def call(params)
      @title = 'Dashboard'
    end
  end
end

我々は#title、私たちの見解から、アクセス時に同じ出力を得るために削除することができ/dashboardます。

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

テンプレートのレンダリングコンテキストは、ビューメソッドとエクスポージャで構成されています。

 

カスタムレンダリング

Hanamiはビューを呼び出すことによってレンダリングを実行し#render、それに応じて文字列が必要です。オブジェクト指向のアプローチの利点は、デフォルト動作から容易に分岐することができることです。

このメソッドをオーバーライドして、カスタムレンダリングポリシーを定義することができます。

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

    def render
      raw %(

Dashboard

)


    end
  end
end

もう一度出力は変わりませんが、テンプレートはまったく使用されません。

ビュー#renderが出力を上書きする場合、レスポンスの本文になる文字列でなければなりません。テンプレートは使用されず、削除することができます。

 

バイパスレンダリング

アクションが応答の本体を割り当てる#body=と、ビューのレンダリングはバイパスされます。


前のページ:ビュー – 概要