【发布时间】:2012-05-19 15:37:38
【问题描述】:
有人问过这个问题,但没有给出答案……我遇到了同样的问题。
我正在使用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 %>
当我不包含 (:thumb) 时,我会看到完整的图像...但是当我包含 (:thumb) 时,我会收到以下错误:
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...
谢谢
【问题讨论】:
-
听起来版本方法甚至没有得到处理。为什么不在carrierwave中添加调试器语句(或断点或放置“某些东西”)并查看它是否正常工作。具体来说,在carrierwave/lib/carrierwave/uploader/versions.rb 中搜索version 方法。可能发生的一件事是您定义了两个 AvatarUploader,其中一个没有拇指版本。
标签: ruby-on-rails imagemagick carrierwave rmagick