Hochladen mehrerer Dateien auf einmal zu Rails-app mit Carrierwave (HTML5)

Ich bin nah dran...sehr nah...ich bin in der Lage, einzelne Dateien hochladen nur gut...aber wenn ich den Typ ändern meiner form file_field zu :multiple => true so kann ich das hochladen mehrerer Bilder auf einmal meine hochgeladenen Dateien bekommen, eingewickelt in ein array...und die 'Magie' der 'accepts_nested_attributes_for" verloren.

Edit:
Nach der Prüfung mehr Frage ich mich, ob ich auch brauchen, um die Mühe mit accepts_nested_attributes_for? Vielleicht sollte ich einfach nur einen file_field, :multiple => true in meiner Galerie form (im Gegensatz zu einer verschachtelten form) und dann in meinem create-Aktion erstellen, die neue Galerie, und dann eine Schleife durch jedes element in der params[:gallery][:photos_attributes]["0"][:image] array von hand, so zu sprechen, ruft @gallery.photos.create für jedes element. ?!? Scheint umständlich...aber es ist alles, was ich mit oben kommen kann.

In der Hoffnung, jemand mit mehr Erfahrung mit Rails kann, Glockenspiel...

Params:

{"utf8"=>"✓", 
"authenticity_token"=>"9jXvIwcllct7UyUfo6cvhEucQf2u3SY50SuaCLtFO4c=", 
"gallery"=>{
  "name"=>"First Gallery", 
  "photos_attributes"=>{"0"=>{
    "image"=>[
      #<ActionDispatch::Http::UploadedFile:0x00000104b78978 
        @original_filename="first_test_image.jpg", 
        @content_type="image/jpeg", 
        @headers="Content-Disposition: form-data; name=\"gallery[photos_attributes][0][image][]\"; filename=\"first_test_image.jpg\"\r\nContent-Type: image/jpeg\r\n", 
        @tempfile=#<File:/var/folders/bQ/bQYZC2ukFZCvbKzEDGRtJE+++TI/-Tmp-/RackMultipart20110622-4459-vz78ee>>, 
      #<ActionDispatch::Http::UploadedFile:0x00000104b78950 
        @original_filename="second_test_image.jpg", 
        @content_type="image/jpeg", 
        @headers="Content-Disposition: form-data; name=\"gallery[photos_attributes][0][image][]\"; filename=\"second_test_image.jpg\"\r\nContent-Type: image/jpeg\r\n", 
        @tempfile=#<File:/var/folders/bQ/bQYZC2ukFZCvbKzEDGRtJE+++TI/-Tmp-/RackMultipart20110622-4459-1jzhhyg>>
      ]
    }
  }
}, "commit"=>"Save", "action"=>"create", "controller"=>"galleries"}



#app/models/gallery.rb 
class Gallery < ActiveRecord::Base 
  has_many :photos, :dependent => :destroy 
  accepts_nested_attributes_for :photos 
end 

#app/models/photo.rb 
class Photo < ActiveRecord::Base 
  belongs_to :gallery 
  mount_uploader :photo, PhotoUploader 
end 

#config/routes.rb
resources :galleries do
  resources :photo, :only => [:create, :destroy]
end

GalleriesController

  def new
    @gallery = Gallery.new
    @gallery.photos.build

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @gallery }
    end
  end

  ...

  def create
    @gallery = Gallery.new(params[:gallery])

    respond_to do |format|
      if @gallery.save
        format.html { redirect_to @gallery, notice: 'Gallery was successfully created.' }
        format.json { render json: @gallery, status: :created, location: @gallery }
      else
        format.html { render action: "new" }
        format.json { render json: @gallery.errors, status: :unprocessable_entity }
      end
    end
  end
  • Nur aus Neugier, was ist "utf8"=>"✓" für? Warum das tickmark?
  • Das geht in params standardmäßig, wenn Sie eine Anfrage an den server zu sagen, welche Kodierung es ist. Überprüfen Sie Ihre rails-server-Ausgabe und du wirst sehen es gibt.
  • Ich weiß nicht wirklich verwenden Schienen es nur, das mich faszinierte. Danke für die Erklärung!
  • haben Sie jemals verwalten eine Lösung finden?
InformationsquelleAutor Meltemi | 2011-06-22
Schreibe einen Kommentar