Sha256: f17e28517f796a99a756c243f6a265b5ccbda3b03729cb15cc1e3294d6e86743
Contents?: true
Size: 1.03 KB
Versions: 6
Compression:
Stored size: 1.03 KB
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| if file.present? params[last_id] = { "asset" => file }.with_indifferent_access last_id.succ! end 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
6 entries across 6 versions & 1 rubygems