2010-12-11 9 views
5

Ich habe mit der Verwendung von Paperclip herumgespielt, um eine Fotogalerie/ein Geschäft aufzubauen. Eine Galerie hat viele Fotos und ein Foto gehört zu einer Galerie und Benutzer können viele Galerien haben. Die Standardeinstellungen der Büroklammer machen etwas wie /:class/:style/:basename.:extension. Bei einer Galeriekonfiguration hätte ich jedoch lieber etwas wie /:class/:user_name/:gallery_name/:styles/:basename.:extension. Ich habe noch keine Möglichkeit gefunden, auf Variablen in einem Objekt zuzugreifen, um diese Speicherorte dynamisch zu erstellen.Paperclip-Pfad/URL mit Werten eines Objekts

Gibt es eine Möglichkeit, dies zu tun?

Ich habe versucht, # {Variable} im Pfad, aber das funktioniert nicht. Diese Fotoobjekte werden mit @ gallery.photos.build erstellt, sodass die gallery_id bereits einen Wert haben sollte, auf den zugegriffen werden kann.

Antwort

8

Werfen Sie einen Blick auf die tips and updates Abschnitt auf Thoughtbot.com. Es wird beschrieben, wie Sie eigene interpolierte Variablen in den Pfad/die URL einfügen.

4

@ zetetic's Antwort ist etwas veraltet (der Blogpost stammt aus 2008) Die aktuelle (2015) Möglichkeit, benutzerdefinierte Interpolationen zu erstellen, ist in der paperclip wiki beschrieben. Also für die user_name in der Frage, wahrscheinlich so etwas wie das:

# interpolate in paperclip 
Paperclip.interpolates :user_name do |attachment, style| 
    attachment.instance.gallery.user.name 
end 
+0

Vielen Dank für die Buchung der neuen Dokumentationslink! – jaredsmith