module Onsi::Controller

Helper methods for rendering API responses.

@example

class PersonController < ActionController::API
  include Onsi::Controller

  render_version(:v1)

  def show
    person = Person.find(params[:id])
    render_resource(person)
  end
end

Public Instance Methods

render_resource(resource, opts = {}) click to toggle source

Render the JSON response.

@param resource [Onsi::Resource, Enumerable, Onsi::Model]

@param opts [Hash] The options hash. If a version is included that will

take presidence over the controller default .render_version

- The other keys for opts will be passed directly the #render method.
# File lib/onsi/controller.rb, line 51
def render_resource(resource, opts = {})
  metadata = opts.delete(:meta)
  version = opts.delete(:version) || self.class.render_version || Model::DEFAULT_API_VERSION
  payload = Resource.render(resource, version)
  payload[Resource::META_KEY].merge!(metadata) if metadata
  render_options = {}
  render_options[:json] = payload
  render_options.merge!(opts)
  render(render_options)
end