module Presents::ActionViewExtension

Public Instance Methods

aggregate(cls, *presenters) { |presenter| ... } click to toggle source

Public: Render a context in the view to wrap thwo presenters in an

aggregate presenter.

cls - Full classname constant of the aggregate presenter. This is required

unlike the present method.

presenters - Variable argument list of presenters/objects. They are

accessed by their underscore class name in the presenter. There
should never be a need to pass two of the same class.

Examples

<% present @user do |user_presenter| %>
  <% present @organization do |organization_presenter| %>
    <% aggregate UserOrganizationPresenter, user_presenter, organization_presenter do |user_organization_presenter| %>

      <%= user_presenter.do_presenter_method %>
      <%= user_presenter.do_model_method %>

      <%= organization_presenter.do_presenter_method %>
      <%= organization_presenter.do_model_method %>

      <%= user_organization_presenter.do_presenter_method %>
      <%= user_organization_presenter.do_model_method %>
    <% end %>
  <% end %>
<% end %>

Returns the aggregate presenter for the model.

# File lib/presents/action_view_extension.rb, line 53
def aggregate(cls, *presenters)
  presenter = cls.new(presenters, self)
  yield presenter if block_given?
  presenter
end
present(object, cls = nil) { |presenter| ... } click to toggle source

Public: Render a context in the view to wrap a model with a presenter.

object - The object (model) to be presented. cls - Defaults to nil. Allows manual specification of which Presenter

to use.

Examples

<% present @user do |user_presenter| %>
  <%= user_presenter.do_presenter_method %>
  <%= user_presenter.do_model_method %>
<% end %>

Returns the presenter for the model.

# File lib/presents/action_view_extension.rb, line 18
def present(object, cls = nil)
  cls ||= "#{object.class}Presenter".constantize
  presenter = cls.new(object, self)
  yield presenter if block_given?
  presenter
end