Sha256: 454dda98eccdd9c07c65c8b1e292f4e3d67c729aed76c6d21b7a1e8249190b74

Contents?: true

Size: 1009 Bytes

Versions: 16

Compression:

Stored size: 1009 Bytes

Contents

class Lalala::ExtRack::MultipleFileUploadSupport

  METHODS = /^POST|PUT|PATCH$/

  def initialize(app)
    @app = app
  end

  def call(env)
    if METHODS === env["REQUEST_METHOD"]
      params = env["rack.request.form_hash"]
      correct_assets_hash_nesting(params)
    end

    @app.call(env)
  end

  def correct_assets_hash_nesting(params, key=nil)
    if key and key.to_s.ends_with?("_attributes")
      return if params.size == 0

      last_id = params.keys.sort_by(&:to_i).last
      last_id = "#{last_id}"

      return if params[last_id]["asset"].nil?

      last = params.delete(last_id)
      assets = last["asset"]

      return unless Array === assets

      assets.each do |file|
        params[last_id] = { "asset" => file }.with_indifferent_access
        last_id.succ!
      end

    else
      case params
      when Hash then params.each { |k, v| correct_assets_hash_nesting(v, k) }
      when Array then params.each { |v| correct_assets_hash_nesting(v) }
      end

    end
  end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
lalala-4.0.0.dev.133 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.132 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.131 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.129 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.128 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.126 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.125 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.124 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.123 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.118 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.116 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.114 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.113 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.111 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.109 lib/lalala/ext_rack/multiple_file_upload_support.rb
lalala-4.0.0.dev.107 lib/lalala/ext_rack/multiple_file_upload_support.rb