2012-05-11 13 views
6

To pytanie zostało zadane, ale brak odpowiedzi ... Mam ten sam problem.problem kciuka carrierwave

Używam carrierwave do przesyłania plików wszystko działa świetnie, dopóki Chciałem stworzyć kciuki

obrazy są zapisywane w tmp bezpośredniego, ale utrzymane w tym samym rozmiarze ...

Moje avatar_uploader.rb plik wygląda następująco:

class AvatarUploader < CarrierWave::Uploader::Base 
include CarrierWave::RMagick 
storage :file 
def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
end 
version :thumb do 
    process :resize_to_limit => [200, 200] 
end 

Mój pogląd jest następujący:

<% for image in @posts %> 
<%= image_tag image.avatar_url(:thumb) if image.avatar? %> 
<%= image.title %> 
<% end %> 

Kiedy nie obejmują: (kciuk), widzę pełne obrazy ... ale kiedy robię obejmują (: kciuk), pojawia się następujący błąd:

Version thumb doesn't exist! 

poniżej jest mój model setup

class Post < ActiveRecord::Base 
    attr_accessible :comments, :frame, :title, :twitter, :avatar 
    belongs_to :user 
    mount_uploader :avatar, AvatarUploader 
end 

widzę, że katalog tmp został stworzony, ale obrazy nie zmieniany ... mam zainstalowany ImageMagick i rmagick ...

Dziękuję

+0

Wygląda na to, że metody wersji nie są nawet przetwarzane. Dlaczego nie dodasz instrukcji debuggera (lub punktu przerwania lub wstawi "coś") w przeglądarce przewoźnika i sprawdź, czy działa. W szczególności, w carrierwave/lib/carrierwave/uploader/versions.rb i wyszukaj metodę wersji. Jedną z rzeczy, która może się wydarzyć, jest to, że definiujesz dwa programy AvatarUploaders, a jeden z nich nie ma wersji kciuka. – cgat

Odpowiedz

-1

Czy próbował dragon fly Gem? Wiem, że nie rozwiązuję twojego problemu. Ale po kilkukrotnym użyciu uważam, że jest lepszy niż nośnik, jeśli chodzi o obrazy. Klejnot Dragonfly nie tworzy wielu obrazów, zmienia rozmiar tylko jednego obrazu do dowolnego rozmiaru, w porównaniu do nośnej fali, która tworzy wiele kciuków.

+0

Na razie wolałbym trzymać się operatora ...ale jeśli naprawdę nie mogę tego uruchomić, spróbuję zamiast tego ważki. – user749798

4

Spróbuj jeden z tych składni:

image.avatar.thumb.url 
# or 
image.avatar.url(:thumb) 
+0

Dzięki, po prostu wypróbowałem oba. Pierwsza wersja podaje błąd "niezdefiniowana metoda" thumb "dla /uploads/IMG_0185.jpg:AvatarUploader". Druga wersja daje błąd "Version thumb does not exist!" Jakieś inne sugestie? Doceń pomoc. – user749798

+0

OK właśnie zredagowałem moją odpowiedź, daj mi znać, jeśli ta dolna część w ogóle pomaga. –

+0

Masz także jeszcze jeden "koniec" na końcu klasy AvatarUpload, zakładam, że właśnie został odcięty? –

8

myślę, że może chcesz odtworzyć wersje ponieważ może trzeba utworzyć wielkości kciuka do niektórych zdjęć po przesłanych kilka innych plików.

image.avatar.url(:thumb) 

powyżej składni jest w porządku

Aby odtworzyć wersje spróbuj uruchomić

image.avatar.recreate_versions! 

wszystkich awatarów może być niedostępne.

+0

'image.avatar.image_url (: thumb)' działa dla mnie – gotqn

1

Sugeruję użycie

include CarrierWave::MiniMagick 

zamiast

include CarrierWave::RMagick 

ponieważ ich może być tak, że nie masz na utrzymaniu wszystkich bibliotekami z rmagick. Wersja kciuka jest tworzona przy pomocy RMagick lub MiniMagick. Problem z twoim RMagick.

+0

mój problem polegał na tym, że włączałem/odkomentowałem oba na początku, po przeczytaniu odpowiedzi po prostu włączyłem mini magię, ale to nie zadziałało, wtedy skomentowałem i włączono rmagick i to zrobiło ... – whizcreed