Module: Praxis::Extensions::Rendering

Extended by:
ActiveSupport::Concern
Includes:
FieldExpansion
Defined in:
lib/praxis/extensions/rendering.rb

Instance Method Summary collapse

Methods included from FieldExpansion

#expanded_fields

Instance Method Details

#default_encoderObject



38
39
40
# File 'lib/praxis/extensions/rendering.rb', line 38

def default_encoder
  ''
end

#display(object, include_nil: false, encoder: default_encoder) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/praxis/extensions/rendering.rb', line 21

def display(object, include_nil: false, encoder: default_encoder)
  identifier = Praxis::MediaTypeIdentifier.load(media_type.identifier)
  identifier += encoder unless encoder.blank?
  response.headers['Content-Type'] = identifier.to_s
  response.body = render(object, include_nil: include_nil)
  response
rescue Praxis::Renderer::CircularRenderingError => e
  Praxis::Application.instance.validation_handler.handle!(
    summary: 'Circular Rendering Error when rendering response. ' \
             'Please especify a view to narrow the dependent fields, or narrow your field set.',
    exception: e,
    request: request,
    stage: :action,
    errors: nil
  )
end

#render(object, include_nil: false) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/praxis/extensions/rendering.rb', line 9

def render(object, include_nil: false)
  loaded = media_type.load(object)
  renderer = Praxis::Renderer.new(include_nil: include_nil)
  renderer.render(loaded, expanded_fields)
rescue Attributor::DumpError
  if media_type.domain_model == Object
    warn "Detected the rendering of an object of type #{media_type} without having a domain object model set.\n" \
         'Did you forget to define it?'
  end
  raise
end