Sha256: 511c75afb1e1f438dbe40afce058aa995e921841e1e90f544bf3bb52a7c31174

Contents?: true

Size: 1.96 KB

Versions: 3

Compression:

Stored size: 1.96 KB

Contents

# encoding: utf-8
module Uploader
  class AttachmentsController < ActionController::Metal
    include AbstractController::Callbacks
  
    before_filter :find_klass
    
    def create
      @asset = @klass.new(params[:asset])
      @asset.uploader_create(params, request)
      render_resourse(@asset, 201)
    end
    
    def destroy
      @asset = @klass.find(params[:id])
      @asset.uploader_destroy(params, request)
      render_resourse(@asset, 200)
    end

    def sort
      @model = params[:assetable_type].safe_constantize

      sort = params[:sort].split('|')
      if params[:assetable_id].blank?
        @finder = @klass.where(guid: params[:guid])
      else
        @finder = @klass.where(assetable_id: params[:assetable_id])
      end

      @finder.each do |asset|
        if asset.respond_to?(:sort=)
          asset.sort = sort.index(asset.id.to_s)
          asset.save!
        end
      end

      self.status = 200
      self.content_type = "application/json"
      self.response_body = '{"ok": true}'
    end
    
    protected


      def airbrake_request_data
        {
            :controller       => params[:controller],
            :action           => params[:action],
        }
      end

      def find_klass
        @klass = params[:klass].blank? ? nil : params[:klass].safe_constantize
        raise ActionController::RoutingError.new("Class not found #{params[:klass]}") if @klass.nil?
      end
      
      def render_resourse(record, status = 200)
        if record.errors.empty?
          if record.respond_to?(:to_jq_upload)
            render_json(record.to_jq_upload.to_json(:root => false), status)
          else
            render_json([record].to_json(:root => false), status)
          end

        else
          render_json([record.errors].to_json, 422)
        end
      end
      
      def render_json(body, status = 200)
        self.status = status
        self.content_type = "application/json"
        self.response_body = body
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
glebtv-rails-uploader-0.1.3 app/controllers/uploader/attachments_controller.rb
glebtv-rails-uploader-0.1.2 app/controllers/uploader/attachments_controller.rb
glebtv-rails-uploader-0.1.1 app/controllers/uploader/attachments_controller.rb