module RestingPug::Render

Contains methods responsible for rendering response @used_in {Base.included}

Protected Instance Methods

decide_what_to_render() click to toggle source

Calls {#render_subject} if subject is valid and {#render_errors} otherwise @note Override {#render_subject render_subject} and {#render_errors render_errors} to change rendering behaviour @used_in {Chains#create_chain} @used_in {Chains#update_chain} @use {#render_subject} @use {#render_errors} @example

class BooksController < ApplicationController
  include RestingPug::Base

  private
  # Override a decide_what_to_render to render something special if @subject id is 3
  def decide_what_to_render
    if @subject.valid?
      @subject.id == 3 ? render_something_special : render_subject
    else
      render_errors
    end
  end
end
# File lib/resting_pug/render.rb, line 27
def decide_what_to_render
  if @subject.valid?
    render_subject
  else
    render_errors
  end
end
render_errors() click to toggle source

Renders errors @note Override this method to add more complicated logic of rendering. @used_in {#decide_what_to_render} @example

class BooksController < ApplicationController
  include RestingPug::Base

  private
  # Override a render_errors to render with status 400
  def render_errors
    render json: { errors: @subject.errors }, status: 400
  end
end
# File lib/resting_pug/render.rb, line 108
def render_errors
  render json: { errors: @subject.errors }, status: 422
end
render_not_found() click to toggle source

Renders error when required object is not found @note Override this method to add more complicated logic of rendering. @used_in {Base.included} @example

class BooksController < ApplicationController
  include RestingPug::Base

  private
  # Override a render_not_found to render with message 'Not found'
  def render_not_found
    render json: { message: 'Not found' }, status: 404
  end
end
# File lib/resting_pug/render.rb, line 142
def render_not_found
  render json: {}, status: 404
end
render_nothing() click to toggle source

Renders empty response @note Override this method to add more complicated logic of rendering. @used_in {Subject#destroy_subject} @example

class BooksController < ApplicationController
  include RestingPug::Base

  private
  # Override a render_nothing to render with status 200
  def render_nothing
    render json: {}, status: 200
  end
end
# File lib/resting_pug/render.rb, line 91
def render_nothing
  render json: {}, status: 204
end
render_param_missing() click to toggle source

Renders error when required params are missing @note Override this method to add more complicated logic of rendering. @used_in {Base.included} @example

class BooksController < ApplicationController
  include RestingPug::Base

  private
  # Override a render_param_missing to render with status 422
  def render_param_missing
    render json: { errors: { subject_model_sym => ['param is missing'] } }, status: 422
  end
end
# File lib/resting_pug/render.rb, line 125
def render_param_missing
  render json: { errors: { subject_model_sym => ['param is missing'] } }, status: 400
end
render_subject() click to toggle source

Renders json with a subject @note Override this method to add more complicated logic of rendering.

Override {Subject#subject_model_sym subject_model_sym} to change root attribute.
Override {Params#permitted_fields_for_show permitted_fields_for_show} to change shown attributes.

@used_in {#decide_what_to_render} @used_in {Chains#show_chain} @use {Subject#subject_model_sym} @use {Params#permitted_fields_for_show} @example

class BooksController < ApplicationController
  include RestingPug::Base

  private
  # Override a render_subject to render without a root object
  def render_subject
    render json: @subject.as_json(only: permitted_fields_for_show)
  end
end
# File lib/resting_pug/render.rb, line 53
def render_subject
  render json: { subject_model_sym => @subject.as_json(only: permitted_fields_for_show) }
end
render_subjects() click to toggle source

Renders json with subjects @note Override this method to add more complicated logic of rendering.

Override {Subject#subject_model_sym_plural subject_model_sym_plural} to change root attribute.
Override {Params#permitted_fields_for_show permitted_fields_for_show} to change shown attributes.

@used_in {Chains#index_chain} @use {Subject#subject_model_sym_plural} @use {Params#permitted_fields_for_show} @example

class BooksController < ApplicationController
  include RestingPug::Base

  private
  # Override a render_subjects to render with 'items' as a root object
  def render_subjects
    render json: { items: @subjects.as_json(only: permitted_fields_for_show) }
  end
end
# File lib/resting_pug/render.rb, line 74
def render_subjects
  render json: { subject_model_sym_plural => @subjects.as_json(only: permitted_fields_for_show) }
end