Alternative to render :update

Hi guys and gals.

I don't know how to explain this too well, so I'll try my best and post
some obviously dysfunctional code (just so you can get the idea of what
I'm after if my explanation doesn't do it.)

What I want to do is create an upload form that users can upload more
than one item with. The catch is I want to use ajax to pull off an
insert_html and update the page showing thumbnail to each file as it's
added, while the other files are being uploaded. So, let's say I upload
3 files, when the first one finishes it's inserted to an unordered list
(via ajax, without reloading the page while the other two files are
still uploading), then the next file, then the last file and it ends.
I've been doing it fine with a single file, but now that I've added
multiple file uploads that controller style won't work.

Doing something like this, which I figured was a 1,000,000:1 shot at it
working (of course, it didn't) gives a DoubleRender error which I
expected:

def create
  @project = Project.find(params[:id])

  params[:attachment].each do |key, value|
    if value and value != ''
      @file = Image.new(Hash['uploaded_data' => value])
      @file.user_id = logged_in_user.id
      @file.project_id = @project.id

      respond_to do |format|
        if @file.save
          format.js do
                  responds_to_parent do
                    render :update do |page|
                page.insert_html :top, "images", :partial => 'image',
:object => @file
                    end
                  end
          end
        else
          # etc...
        end
      end
    end
  else
    # etc.
  end

Can this sort of thing even be pulled off?

You want to execute multiple inserts in a single response, not
multiple responses. This might work, assuming that the rest of your
code works and that you are using attachments as the relationship
name.

def create
  @project = Project.find(params[:id])

  params[:attachment].each do |key, value|
    if value and !value.blank?
      new_file = Image.new(Hash['uploaded_data' => value])
      new_file.user_id = logged_in_user.id
      @project.attachments << new_file
    end
  end

  respond_to do |format|
    if @project.save
      format.js do
        render :update do |page|
          @project.attachments.each do |file|
            page.insert_html :top, "images", :partial =>
'image', :object => file
          end
        end
      end
    end
  end
end

Google for a Rails version of swfupload... in the Rails code it updates
the thumbnails as it processes the files.

If that's the case, then you should split it up into multiple
requests. I believe that you can only send back one response per
request, so that is an inherent problem.

Perhaps you may try sending a request once the a valid file is
selected in the file upload field.