2017-09-28 2 views
0


Ich versuche, mehrere Bilder auf mein System hochzuladen. Ich verwende paperclip gem, um damit umzugehen, aber ich habe 2 Probleme.Mehrere Bilder hochladen mit Büroklammer Edelstein und Bild aktualisieren

1 - Wie speichert man mehrere Bilder in einem Hash?
2 - Wie aktualisiere/füge ich das Bild ein?

Der Benutzer muss alle Produkte auswählen, die er aktualisieren möchte() und alle Bilder auswählen, die er hochladen möchte. Wenn das Produkt den gleichen Namen wie das Bild hat, speichert es die Änderung.

Dies ist meine altprod Funktion in product_controller. Es befasst sich mit den Aktionen, aber der einzige Teil, der Import von Bedeutung ist:

def altprod 
    case params[:commit] 
    (...) 
    when "Import" 
     slctProd = params[:selected_products] 
     slctProd.each do |prod| 
     if prod.eql? File.basename(params[:image].original_filename, ".*") 
      #Here is the problem :'(
      Product.where(code: prod).update(image: :image) 
     end 
     end 
     redirect_to products_url, notice: 'Insert/update images succeeded.' 
    end 
    end 

Und hier ist der Code, um die Dateien zu laden:

<%= form_tag altprod_products_path, multipart: true do %> 
    (...) 
    <%= file_field_tag :image, multiple: true %> 
    <%= submit_tag "Import", method: :post %> 
    <br/> 
    (...) 
<% end %> 

Danke für die Hilfe :)

Antwort

0

Versuche dies. Hier avatar ist Bild Feldname.Ich denke, Sie haben Büroklammer Befehl rechts, um Bildmodell zu generieren.

#Product Controller 

if params[:images] 
    params[:images].each { |image| 
    @product.create_image(avatar: image, user_id: current_user.id) 
    } 
end 

Formular

<%= file_field_tag "images[]", type: :file,:required => true %> 

Bild Modell

belongs_to :product 
has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png", 
        size: { in: 0..1000.kilobytes }, 
         url: "/system/:hash.:extension", 
       hash_secret: "abc123" 
validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/ 
validates_attachment :avatar, :presence => true, 

     :size => { :in => 0..5000.kilobytes} 

Product Model

has_many :images, dependent: :destroy 

Diese Art von Hash von Büroklammer

erstellt wird,
[#<ActionDispatch::Http::UploadedFile:0x007f90b22c5340 @tempfile=#<Tempfile:/tmp/RackMultipart20170929-7646-eqf009.jpeg>, @original_filename="job_post.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"book_image[]\"; filename=\"job_post.jpeg\"\r\nContent-Type: image/jpeg\r\n">, #<ActionDispatch::Http::UploadedFile:0x007f90b22c52f0 @tempfile=#<Tempfile:/tmp/RackMultipart20170929-7646-1qhrsy8.jpeg>, @original_filename="query.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"book_image[]\"; filename=\"query.jpeg\"\r\nContent-Type: image/jpeg\r\n">] 
+1

Danke für die Hilfe :)) –

Verwandte Themen