Sha256: 98a17a07c85f88c8a9ef462a7944892257a41d5de05ab7fe1d05139ba93f33df

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module Transponder
  module Transmission
    extend ActiveSupport::Concern

    included do 
      after_filter :intercept_js
      helper_method :xms_module_name
    end

    def xms_module_name
      params[:controller].include?('/') ? params[:controller].split('/')[0] : 'application'
    end

    def xms_error_hash(object, message, action, module_name)
      { 
        errors: (message || xms_error_partial || object.errors ), 
        controller: controller_name, 
        action: (action || action_name), 
        model_name: object.class.name.downcase,
        id: object.id,
        module: (module_name || xms_module_name) 
      }
    end

    def xms_error_partial(module_name: nil, action: nil, controller: nil)
      render_to_string [(module_name || xms_module_name), 
                        (controller || controller_name), 'errors', 
                        (action || action_name)].join('/'), layout: false
    rescue ActionView::MissingTemplate
      nil
    end

    def xms_error  object, message: nil, action: nil, module_name: nil
      render json: xms_error_hash(object, message, action, module_name), 
                   status: :unprocessable_entity
    end

    def intercept_js
      if request.format == :js
        response.header['Content-Type'] = "application/transmission"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
transponder-0.10.1 lib/transponder/transmission.rb