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



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

def default_encoder
  ''
end

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



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

def display(object, include_nil: false, encoder: self.default_encoder )
  identifier = Praxis::MediaTypeIdentifier.load(self.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



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

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