エクスポージャー

複雑なユースケースのために、ユーザーに動的なページを表示させるためにビューにデータを渡すことができます。Hamaiは明示性に重点を置いています。私たちがコントローラのアクションとビューの間でデータを共有するように指示しない限り、データは共有されていません。

私たちは、この目的を達成するために簡単で強力なメカニズムを使用します。エクスポージャーは、指定された名前のアクションに対してゲッターを作成し、対応するビューでホワイトリストに登録されたインスタンス変数の使用を可能にします。

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

    def call(params)
      @greeting = "Hello"
      @foo      = 23
    end
  end
end

上記の例では、:greeting  を公開しましたが、:fooは公開しません。この場合にビューとテンプレートからグリーティングだけを使用できます。

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

    def welcome_message
      greeting + " and welcome"
    end
  end
end

私たちがfooを使用しようとするとRubyはNoMethodErrorのエラーを出します。