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:
class AssetsController < ApplicationController
def create
Zip::ZipFile.foreach(params[:asset][:uploaded_data].path) do |zip_entry|
if zip_entry.file?
ActionController::UploadedTempfile.open(zip_entry.to_s) do |temp|
zip_entry.extract(temp.path){true}
temp.original_path = zip_entry.to_s
temp.content_type = 'image/jpeg' # Juste pour que ça passe dans
# attachment_fu
@training_slot.assets.create!(:uploaded_data=>temp)
end
end
end
flash[:notice] = 'Les images ont été ajoutées correctement.'
redirect_to ...
rescue ActiveRecord::ActiveRecordError => e
flash[:notice] = 'Une erreur s\'est produite : ' + e
redirect_to ...
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