Sha256: 1130910f8243a7417e949cfc155b916c54860c22c7702241d9e350adb41b35b1
Contents?: true
Size: 1.66 KB
Versions: 4
Compression:
Stored size: 1.66 KB
Contents
require 'active_support/concern' module Onsi ## # 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 module Controller extend ActiveSupport::Concern ## # Defines class methods available on the class. module ClassMethods ## # Set a controller wide default render version. # # @param version [Symbol] The version. def render_version(version = nil) @render_version = version if version @render_version end ## # Ensures that the render_version is set on a subclass # # @private def inherited(subclass) subclass.render_version(@render_version) end end ## # 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. 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 end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
onsi-2.0.1 | lib/onsi/controller.rb |
onsi-1.3.1 | lib/onsi/controller.rb |
onsi-1.3.0 | lib/onsi/controller.rb |
onsi-1.2.2 | lib/onsi/controller.rb |