Class: Shamu::JsonApi::Presenter

Inherits:
Object
  • Object
show all
Defined in:
lib/shamu/json_api/presenter.rb

Overview

Presenters are responsible for projecting an Entities::Entity or PORO to a well-formatted JSON API builder response.

Presenter delegates all of the ResourceBuilder methods for convenient syntax.

class UserPresenter < ApplicationPresenter
  def present
    identifier :user, resource.id

    attributes name: resource.name,
               email: resource.email

    relationship( :address ) do |rel|
      rel.identifier :address, resource.address_id
      rel.link :related, user_address_url( resource, resource.address_id )
    end
  end
end

Direct Known Subclasses

ApplicationPresenter

Instance Method Summary collapse

Constructor Details

#initialize(resource, builder) ⇒ Presenter

Returns a new instance of Presenter.

Parameters:

  • resource (Object)

    to presenter.

  • builder (ResourceBuilder)

    used to build the JSON API response.



29
30
31
32
# File 'lib/shamu/json_api/presenter.rb', line 29

def initialize( resource, builder )
  @resource = resource
  @builder  = builder
end

Instance Method Details

#present

This method returns an undefined value.

Serialize the resource to the builder.



37
38
39
# File 'lib/shamu/json_api/presenter.rb', line 37

def present
  fail NotImplementedError
end