Class: JSONAPI::Serializable::SuccessRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi/serializable/renderer.rb

Instance Method Summary collapse

Constructor Details

#initialize(renderer = JSONAPI::Renderer.new) ⇒ SuccessRenderer

Returns a new instance of SuccessRenderer.



7
8
9
# File 'lib/jsonapi/serializable/renderer.rb', line 7

def initialize(renderer = JSONAPI::Renderer.new)
  @renderer = renderer
end

Instance Method Details

#render(resources, options = {}) ⇒ Hash

Serialize resources into a JSON API document.

Examples:

renderer.render(nil)
# => { data: nil }
renderer.render(user)
# => {
       data: {
         type: 'users',
         id: 'foo',
         attributes: { ... },
         relationships: { ... }
       }
     }
renderer.render([user1, user2])
# => { data: [{ type: 'users', id: 'foo', ... }, ...] }

Parameters:

  • resources (nil, Object, Array)
  • options (Hash) (defaults to: {})

    @see JSONAPI.render

  • class (Hash)

    a customizable set of options

  • namespace (Hash)

    a customizable set of options

  • inferrer (Hash)

    a customizable set of options

  • expose (Hash)

    a customizable set of options

Returns:

  • (Hash)


43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/jsonapi/serializable/renderer.rb', line 43

def render(resources, options = {})
  options   = options.dup
  klass     = options.delete(:class)
  namespace = options.delete(:namespace)
  inferrer  = options.delete(:inferrer) || namespace_inferrer(namespace)
  expose    = options.delete(:expose) || {}
  resource_builder = JSONAPI::Serializable::ResourceBuilder.new(inferrer)
  exposures = expose.merge(_resource_builder: resource_builder)

  resources = resource_builder.build(resources, exposures, klass)

  @renderer.render(options.merge(data: resources))
end