2012-05-11 40 views
6

有人問這個問題,但沒有給出答案...我有同樣的問題。carrierwave thumb問題

我使用carrierwave上傳文件的一切都很正常,直到我想創造大拇指

的圖像保存在一個直接TMP,但保持在相同的大小...

我avatar_uploader.rb文件看起來像這樣:

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 

我認爲有以下幾點:

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

當我不包括(:拇指),我看到完整的圖片...但是當我做包括(:拇指),我收到以下錯誤:

Version thumb doesn't exist! 
下面

是我的模型建立

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

我可以看到一個tmp目錄下創建的,但圖像沒有調整...我有ImageMagick的和rmagick安裝...

謝謝

+0

這聽起來像版本的方法甚至沒有得到處理。爲什麼你不在carrierwave中添加一個調試器語句(或斷點或放入「某些東西」),看看它是否正常工作。具體來說,在carrierwave/lib/carrierwave/uploader/versions.rb中搜索版本方法。可能發生的一件事是,您正在定義兩個AvatarUploaders,其中一個沒有拇指版本。 – cgat

回答

-1

您是否嘗試過龍門飛寶石?我知道我沒有解決你的問題。但在使用了幾次後,我認爲在圖像方面比載波更好。蜻蜓寶石不會創造大量的圖像,只是將一幅圖像調整爲您指定的大小,相比之下,創建大量大拇指的載波。

+0

寧願暫時擱置載波...但如果我真的無法得到這個工作,反而會嘗試蜻蜓。 – user749798

4

嘗試這些語法之一:

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

謝謝,剛剛嘗試過。第一個版本給/uploads/IMG_0185.jpg:AvatarUploader提供了「undefined method thumb」的錯誤。第二個版本給出錯誤「版本拇指不存在!」還有其他建議嗎?感謝幫助。 – user749798

+0

好的,只是編輯了我的答案,讓我知道,如果底部有幫助。 –

+0

另外,在你的AvatarUpload類的最後,你還有另外一個'end',我想,它剛被切斷了? –

8

我想你可能要重新創建的版本,因爲你可能有一些圖像創建拇指大小,你上傳了一些其他文件後。

image.avatar.url(:thumb) 

上面的語法是罰款

要重新嘗試版本,你可能會丟失所有的化身運行

image.avatar.recreate_versions! 

+0

'image.avatar.image_url(:thumb)'適合我 – gotqn

1

我建議使用的

include CarrierWave::MiniMagick 

代替

include CarrierWave::RMagick 

因爲他們可能是你沒有RMagick的所有依賴庫的情況。拇指版本是使用RMagick或MiniMagick創建的。問題在於你的RMagick。

+0

我的問題是,我已啓用/取消註釋,在閱讀你的答案後,我剛啓用迷你magick,但沒有奏效,然後我評論和啓用rmagick和那做了.. – whizcreed