carrierwave拇指问题

时间:2012-05-11 02:21:38

标签: ruby-on-rails imagemagick carrierwave rmagick

这个问题被问到了,但没有给出答案......我遇到了同样的问题。

我正在使用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 ......

谢谢

4 个答案:

答案 0 :(得分:8)

我认为您可能想要重新创建版本,因为您在上传其他文件后可能会为某些图像创建拇指大小。

image.avatar.url(:thumb)

上面的语法很好

要重新创建版本,请尝试运行

image.avatar.recreate_versions!

您可能缺少的所有头像。

答案 1 :(得分:4)

尝试以下语法之一:

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

答案 2 :(得分:1)

我建议使用

include CarrierWave::MiniMagick

而不是

include CarrierWave::RMagick

因为他们可能是你没有RMagick的所有依赖库的情况。 Thumb版本是使用RMagick或MiniMagick创建的。问题出在你的RMagick上。

答案 3 :(得分:-1)

你试过龙飞宝石吗?我知道我不是在解决你的问题。但是在使用了几次后,我认为在图像方面它比载波更好。与创建大量拇指的载波相比,Dragonfly gem不会创建大量图像,只需将一个图像的大小调整为您指定的大小。