Fournir une image par défaut pour attachme nt_fu

attachment_fu n’apprécie pas qu’on ne lui fournisse pas d’image Ã
uploader.

Plus exactement, si on a pas indiqué un fichier à uploader il râle
amèrement
lors de la validation :

Content type can’t be blank
Content type is not included in the list
Size can’t be blank
Size is not included in the list
Filename can’t be blank

(n’en jetez plus ! :wink:

Je voudrais bien pouvoir le calmer en fournissant dans ce cas une image
par
défaut, neutre et pas trop lourde.

Je sais pas quand et comment lui demander et mes essais sont infructueux
jusqu’ici.

Une idée quelqu’un ?

Merci d’avance


IciMarché fédère l’e-commerce de proximité
http://icimarche.fr

2008/5/29 philippe lachaise [email protected]:

Merci d’avance
Tu peux aussi enlever la validation

validates_attachment.

Si par contre tu en veux quelque une des validations, tu peux
récupérer le code de validates_attachment.


Cyril M.

Ca marche merci !

Par contre il faut que je teste plus loin si j’ai une image dans mon
modèle
sinon BOUM quand j’appelle
public_filename(:thumb)

Y a-t-il un moyen propre de l’interroger ?


IciMarché fédère l’e-commerce de proximité
http://icimarche.fr

validates_as_attachment unless params[:filename].empty?

Ben ça lui a pas plu :

/var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:1532:in
method_missing_without_paginate': undefined local variable or methodparams’ for #Class:0xb55e4a9c

validates_as_attachment unless file_left_as_blank?

protected
def file_left_as_blank?
filename.blank?
end

remplace filename par le nom de ton champs

Tu peux faire:

validates_as_attachment unless params[:filename].empty?

remplace :filename par le nom de ton champs.

Pour afficher les models sans images, tu peux créer un helper du genre:

def link_to_thumb(model)
unless model.pictures.empty?
link_to image_tag(model.pic.public_filename(:thumb)),
model.pic.public_filename
end
end

validates_as_attachment unless file_left_as_blank?

Oui mais “unless file_left_as_blank?” sera évalué au niveau de la classe
pas
de l’instance ?!


IciMarché fédère l’e-commerce de proximité
http://icimarche.fr

2008/5/29 philippe lachaise [email protected]:

validates_as_attachment unless file_left_as_blank?

Oui mais “unless file_left_as_blank?” sera évalué au niveau de la classe pas
de l’instance ?!

Pour openid j’utilise un truc dans le genre et ça marche:

validates_presence_of :login, :email, :if =>
:password_required?
def password_required?
not_openid? && (crypted_password.blank? || !password.blank?)
end
def not_openid?
identity_url.blank?
end

Ah oui !

:password_required?

mais pas

password_required?

Derrière il y a un “send( :password_required? )” au moment de
l’évaluation


IciMarché fédère l’e-commerce de proximité
http://icimarche.fr

Bon je me suis débrouillé mais ce serais sypa de pouvoir filer une image
par
défaut à attachment_fu
(encore mieux, sans la dupliquer)


IciMarché fédère l’e-commerce de proximité
http://icimarche.fr

Le 29 mai 2008 19:10, philippe lachaise a écrit :

attachment_fu n’apprécie pas qu’on ne lui fournisse pas d’image à uploader.
[…]
Je voudrais bien pouvoir le calmer en fournissant dans ce cas une image par
défaut, neutre et pas trop lourde.

Je sais pas quand et comment lui demander et
mes essais sont infructueux

Quels étaient-ils ?

jusqu’ici.

As-tu essayé de redéfinir #uploaded_data= dans ton modèle ?
J’essaierai en premier lieu de ce côté :

class Image < ActiveRecord::Base
DEFAULT_IMAGE = {
:content_type => ‘image/jpg’
:filename => ‘rhododendron.jpg’,
:path => File.join RAILS_ROOT, *%w(public images
rhododendron.jpg)
}

has_attachment …
validates_attachment

def uploaded_data=(file_data)
if file_data.nil?
self.content_type = DEFAULT_IMAGE[:content_type]
self.filename = DEFAULT_IMAGE[:filename]
self.temp_path = DEFAULT_IMAGE[:path]
else
super
end
end
end

Garanti 100% non
testé.
– Jean-François.


http://twitter.com/underflow_