J’adore utiliser attachment fu pour gérer mes images. Cependant, je déteste (ainsi que mes clients) charger les images une à une dans mes galleries. Une solution simple et efficace est d’uploader toutes les images compressées dans un fichier zip.

Premièrement, il faut installer rubyzip :

gem install rubyzip

Pas trop difficile jusque là. Vous aurez évidemment besoin de attachment_fu.

script/plugin install http://svn.techno-weenie.net/projects/plugins/attachment_fu/

ou

piston import install http://svn.techno-weenie.net/projects/plugins/attachment_fu/ vendor/

Il ne vous reste plus qu’à ajouter un petit bout de code dans votre contrôlleur:

   1  class AssetsController < ApplicationController
   2    def create
   3      
   4      Zip::ZipFile.foreach(params[:asset][:uploaded_data].path) do |zip_entry|
   5        if zip_entry.file?
   6          ActionController::UploadedTempfile.open(zip_entry.to_s) do |temp|
   7            zip_entry.extract(temp.path){true}
   8            temp.original_path = zip_entry.to_s
   9            temp.content_type = 'image/jpeg' # Juste pour que ça passe dans 
  10                                             # attachment_fu
  11            @training_slot.assets.create!(:uploaded_data=>temp)
  12          end
  13        end
  14      end
  15      
  16      flash[:notice] = 'Les images ont été ajoutées correctement.'
  17      redirect_to ...
  18      
  19    rescue ActiveRecord::ActiveRecordError => e
  20      flash[:notice] = 'Une erreur s\'est produite : ' + e
  21      redirect_to ...
  22    end

Et n’oublliez pas d’importer la librairie dans environnement.rb

require 'zip/zip'

Voilà, c’est tout. En espérant que ça puisse vous éviter le pénible remplissage de galleries. :)

0 Commentaires

Ajouter un commentaire

Vous devez être identifié pour poster un commentaire. Identifiez-vous, ou inscrivez-vous si ce n'est déjà fait.