2013-03-08 8 views
5

Non sono sicuro di aver capito come funziona Paperclip, ma per quanto posso dire, la posizione predefinita per il salvataggio dei caricamenti è nella cartella/public. Quando inserisco la mia foto sul mio sviluppo, essi vengono visualizzati correttamente in (e io li possono aprire nella struttura di file):Caricamento di graffette 404ing

/public/bookmarks/:id/:style.:extension 

Tuttavia, quando lo faccio bookmark.photo.url, ottengo qualcosa di simile:

/system/bookmarks/thumbs/000/000/042/original/filename.png?1362768439 

Ecco il mio bookmark.rb:

has_attached_file :photo, 
         :styles => { :medium => ["512x512>", :jpg], :thumb => ["200x200#", :jpg] } 
         :default_url => "public/bookmarks/default/:style.png", 
         :path => "assets/content/bookmarks/:id/:style.:extension" 

mi manca qualcosa qui? Paperclip non è pensato per affrontare questa roba per me, o ho sbagliato qualcosa nella configurazione?

UPDATE

Se aggiungo il :path e :url nella prima risposta, ottengo:

<img src="/assets/bookmarks/44/original.jpg?1362775508"> 

Mentre dovrei ottenere:

<img src="/bookmarks/44/original.jpg?1362775508"> 

Ma, se io commento l'opzione :url, invece di ottenere:

This, which is the default size

questo, che è la dimensione dell'immagine di default non ritrovata, ottengo:

enter image description here

questo, che è la stessa larghezza dell'immagine che ho sul mio file system, ma l'altezza sbagliata e non trovato Questo accade sia in Chrome che in Safari con cache pulite. Quando vado all'URL, ottengo un 404. Posso anche confermare che l'immagine è memorizzata correttamente sul filesystem ed è visualizzabile dal back-end.

risposta

1

Il comportamento che descrivi è un po 'strano. Vi suggerisco di impostare entrambi: URL e: percorso in un modo simile a questo:

url: '/:class/:id/:style.:extension', 
path: ':rails_root/public:url' 

Ciò significa immagini saranno memorizzate in:

"#{Rails.root}/public/bookmarks/:id/:style.:extension" 

e l'URL vi darà qualcosa di simile:

/bookmarks/bookmarks/1/thumbs.png 

Si noti che è possibile farlo utilizzando config.paperclip_defaults in "application.rb", in modo da non doverlo fare su ciascun modello. E si può ignorare questo su "production.rb" se si desidera un percorso diverso o di stoccaggio, ad es .:

config.paperclip_defaults = config.paperclip_defaults.merge({ 
    storage: :s3, 
    path: 'project_name/public:url' 
    }) 
+0

che è quasi di lavoro, grazie. Tranne ora ricevo '' non '' – Alfo

+0

Forse dovrei semplicemente collegarlo alla cartella delle risorse? – Alfo

+0

E le tue immagini sono correttamente memorizzate in "" # {Rails.root} /public/bookmarks/:id/:style.:extension "'? – Leito

0

Stessa cosa mi è successo di recente. Mi è stato sempre un 404 perché ho avuto :style invece di :styles in /app/models/mymodel.rb

class Pin < ActiveRecord::Base 
    belongs_to :user 
    has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" } 
    validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/ 
end 
Problemi correlati