2013-03-08 11 views
5

Nie jestem pewien, czy rozumiem, jak działa Paperclip, ale z tego co wiem, domyślne miejsce do zapisywania przesyłanych plików znajduje się w folderze/public. Kiedy mogę przesłać moje zdjęcie na moim rozwoju, pojawiają się one poprawnie (i mogę otworzyć je w strukturze pliku):Przesyłanie z Paperclip 404ing

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

Jednak, kiedy zrobić bookmark.photo.url, mam coś takiego:

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

Oto mój 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" 

Am I brakuje czegoś tutaj? Czy Paperclip nie ma na celu poradzenia sobie z tym problemem dla mnie, czy też mam coś nie tak w konfiguracji?

UPDATE

Gdybym dodać :path i :url w pierwszej odpowiedzi, uzyskać:

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

Zważywszy, że należy się:

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

Ale gdybym wykomentuj opcja :url, zamiast uzyskać:

This, which is the default size

ta, która jest domyślną not-found rozmiar obrazu, otrzymuję:

enter image description here

tej, która jest taka sama szerokość jak obraz mam na systemie plików, ale źle wysokość i nie znaleziono. Zdarza się to zarówno w Chrome, jak i Safari przy użyciu czystych pamięci podręcznych. Kiedy wchodzę do adresu URL, otrzymuję numer 404. Mogę również potwierdzić, że obraz jest przechowywany poprawnie w systemie plików i jest widoczny z tyłu.

Odpowiedz

1

Zachowanie, które opisujesz, jest trochę dziwne. Proponuję zarówno ustawieniu: URL oraz: ścieżki w sposób podobny do tego:

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

Oznacza to obrazy będą przechowywane w:

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

A URL daje coś takiego:

/bookmarks/bookmarks/1/thumbs.png 

Pamiętaj, że możesz to zrobić, używając config.paperclip_defaults w "application.rb", więc nie musisz tego robić w każdym modelu. I możesz to zmienić w "production.rb", jeśli chcesz inną ścieżkę lub miejsce do przechowywania, np .:

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

To Zacznijmy roboczej, dzięki. Z wyjątkiem teraz otrzymuję '' nie '' – Alfo

+0

Może powinienem po prostu dowiązać symbolicznie do folderu zasobów? – Alfo

+0

A twoje obrazy są poprawnie przechowywane w '" # {Rails.root} /public/bookmarks/:id/:style.:extension "'? – Leito

0

To samo ostatnio mi się przydarzyło. Ja dostaję 404 bo miałem :style zamiast :styles w /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 
Powiązane problemy