我在Rails应用程序中使用带有Rmagick的carrierwave gem。我在我的上传器文件中设置了一个新版本:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :preview do
process :resize_to_fill => [580, 350]
end
end
当然,我在我的gemfile中包含了rmagick和carrierwave。现在我尝试在我的视图中加载我的图像的预览版本:
@product.photos.first.image.preview
这不会产生任何错误,但会加载损坏的图像。如果我复制图像的网址,我会收到路由错误('无路由匹配/path/to_my_imagesfolder/preview_image.png')。如果我删除了预览方法,则图片会正确加载。
问题是什么?我想也许这是一个权限问题,但我将uploads文件夹设置为777但仍然失败。
有什么想法吗?
编辑:我意识到如果我再次上传图片,则会创建新版本。有没有可能让Rmagick在被请求时创建它们(就像TimThumb在PHP中那样)或者至少是否有任何命令批量创建所有版本?
必须有比上传所有图片更好的方法......
答案 0 :(得分:10)
您可以使用.recreate_versions!
例如:
Product.all.each do |product|
product.photos.each do |photo|
photo.recreate_versions!
end
end
答案 1 :(得分:0)