class JSONAPI::Rails::SuccessRenderer

@private

Public Class Methods

new(renderer = JSONAPI::Serializable::Renderer.new) click to toggle source
# File lib/jsonapi/rails/renderer.rb, line 7
def initialize(renderer = JSONAPI::Serializable::Renderer.new)
  @renderer = renderer

  freeze
end

Public Instance Methods

render(resources, options, controller) click to toggle source
# File lib/jsonapi/rails/renderer.rb, line 13
def render(resources, options, controller)
  options = default_options(options, controller, resources)

  @renderer.render(resources, options)
end

Private Instance Methods

default_options(options, controller, resources) click to toggle source

rubocop:disable Metrics/MethodLength, Metrics/AbcSize

# File lib/jsonapi/rails/renderer.rb, line 22
def default_options(options, controller, resources)
  options.dup.tap do |opts|
    opts[:class] ||= controller.jsonapi_class
    opts[:cache] ||= controller.jsonapi_cache
    opts[:links] =
      controller.jsonapi_links
                .merge!(controller.jsonapi_pagination(resources))
                .merge!(opts[:links] || {})
    opts[:expose] = controller.jsonapi_expose.merge!(opts[:expose] || {})
    opts[:fields] ||= controller.jsonapi_fields
    opts[:include] ||= controller.jsonapi_include
    opts[:jsonapi] = opts.delete(:jsonapi_object) ||
                     controller.jsonapi_object
    opts[:meta] ||= controller.jsonapi_meta
  end
end