2012-05-11 7 views
6

Diese Frage wurde gestellt, aber keine Antwort gegeben ... Ich habe das gleiche Problem.carrierwave thumb issue

ich carrierwave bin mit für Dateien alles Hochladen funktioniert gut, bis ich den Daumen in einem tmp direkt,

Bilder gespeichert erstellen wollte, aber in der gleichen Größe gehalten ...

Mein avatar_uploader.rb Datei sieht wie folgt aus:

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 

Meine Ansicht hat die folgenden:

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

Wenn ich nicht enthalten (: Daumen), sehe ich die vollen Bilder ... aber wenn ich das tun umfassen (: Daumen), erhalte ich folgende Fehlermeldung:

Version thumb doesn't exist! 

unten ist mein Modell Setup

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

ich kann sehen, dass ein tmp-Verzeichnis erstellt wurde, aber die Bilder nicht geändert ... ich habe ImageMagick und installiert RMagick ...

Danke

+0

Es klingt wie die Version Methoden nicht einmal verarbeitet wird. Warum fügen Sie keine Debugger-Anweisung (oder einen Haltepunkt oder "etwas") in carrierwave ein und sehen, ob es funktioniert. Speziell in carrierwave/lib/carrierwave/uploader/versions.rb und suche nach der Versionsmethode. Eine Sache, die passieren könnte, ist, dass Sie zwei AvatarUploaders definieren und einer von ihnen die Daumenversion nicht hat. – cgat

Antwort

-1

haben Sie versucht, den Drachen Gem fliegen? Ich weiß, dass ich dein Problem nicht lösen werde. Aber nach ein paar Malen denke ich, es ist besser als Carrierwave, wenn es um Bilder geht. Dragonfly gem erstellt nicht viele Bilder nur die Größe eines Bildes zu jeder Größe, die Sie angeben, im Vergleich zu Carrierwave, die eine Menge von Daumen erstellt.

+0

Würde vorerst bei carrierwave bleiben ...aber wenn ich das wirklich nicht zur Arbeit bringen kann, probiere ich stattdessen Libelle aus. – user749798

4

Versuchen Sie eine dieser Syntaxen:

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

Danke, gerade beide ausprobiert. Die erste Version gibt den Fehler "undefined Methode' thumb 'für /uploads/IMG_0185.jpg:AvatarUploader ". Die zweite Version gibt den Fehler "Version Daumen existiert nicht!" Irgendwelche anderen Vorschläge? Schätze die Hilfe. – user749798

+0

Ok gerade meine Antwort bearbeitet, lassen Sie mich wissen, ob dieser untere Teil überhaupt hilft. –

+0

Du hast auch noch ein "Ende" am Ende deiner AvatarUpload-Klasse, ich nehme an, dass gerade abgeschnitten wurde? –

8

Ich glaube, Sie könnten Versionen neu erstellen möchten, da haben Sie vielleicht Daumengröße für einige Bilder erstellen, nachdem Sie einige andere Dateien hochgeladen.

image.avatar.url(:thumb) 

obige Syntax ist in Ordnung

Versionen

image.avatar.recreate_versions! 

auf alle Avatare Lauf versuchen neu zu erstellen Sie werden fehlen könnten.

+0

'image.avatar.image_url (: thumb)' funktioniert für mich – gotqn

1

schlage ich

include CarrierWave::MiniMagick 

statt

include CarrierWave::RMagick 

zu verwenden, da ihr Fall sein kann, dass Sie nicht alle abhängigen Libs von RMagick haben. Die Thumb-Version wird mit RMagick oder MiniMagick erstellt. Problem ist mit Ihrem RMagick.

+0

mein Problem war, dass ich beide zuerst aktiviert/unkommentiert hatte, nachdem ich deine Antwort gelesen hatte, aktivierte ich nur mini magick, aber das hat nicht funktioniert dann ich kommentiert und aktiviert Rmagick und das hat es getan .. – whizcreed