Class: ActsAsApi::Responder

Inherits:
ActionController::Responder
  • Object
show all
Defined in:
lib/acts_as_api/responder.rb

Overview

A custom Rails responder class to automatically use render_for_api in your controller actions.

Example:

class UsersController < ApplicationController
  # Set this controller to use our custom responder
  # (This could be done in a base controller class, if desired)
  self.responder = ActsAsApi::Responder

  respond_to :json, :xml

  def index
    @users = User.all
    respond_with @users, :api_template => :name_only
  end
end

The `:api_template` parameter is required so the responder knows which api template it should render.

Instance Method Summary collapse

Instance Method Details

#display(resource, given_options = {}) ⇒ Object

Overrides the base implementation of display, replacing it with the render_for_api method whenever api_template is specified.


26
27
28
29
30
31
32
33
34
# File 'lib/acts_as_api/responder.rb', line 26

def display(resource, given_options = {})
  api_template = options[:api_template]

  if api_template.nil? || !resource.respond_to?(:as_api_response)
    controller.render given_options.merge!(options).merge!(format => resource)
  else
    controller.render_for_api api_template, given_options.merge!(options).merge!(format => resource)
  end
end