2017-09-28 11 views
0


J'essaie de télécharger plusieurs images sur mon système. J'utilise paperclip gem pour y faire face, mais j'ai 2 problèmes.Téléchargement de plusieurs images à l'aide de trombones et mise à jour de l'image

1 - comment enregistrer plusieurs images dans un hachage?
2 - comment mettre à jour/insérer l'image?

L'utilisateur doit sélectionner tous les produits qu'il veut mettre à jour() et sélectionner toutes les images qu'il veut télécharger. Si le produit porte le même nom que l'image, il enregistre l'altération.

Ceci est ma fonction altprod dans product_controller. Il traite des actions, mais la seule partie qui importe est l'importation:

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 

Et voici le code pour télécharger les fichiers:

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

Merci pour l'aide :)

Répondre

0

Essaye ça. Ici, avatar est le nom du champ d'image. Je pense que vous avez exécuté la commande paperclip à droite pour générer le modèle d'image.

#Product Controller 

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

Formulaire

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

image Modèle

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} 

Modèle Produit

has_many :images, dependent: :destroy 

Ce type de hachage est créé par

paperclip
[#<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

Merci pour l'aide :)) –