【问题标题】:carrierwave thumb issue载波拇指问题
【发布时间】: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


【解决方案1】:

你试过龙飞宝石吗?我知道我没有解决你的问题。但是经过几次使用后,我认为它在图像方面比载波更好。 Dragonfly gem 不会创建很多图像,只需将一张图像的大小调整为您指定的任何大小,相比之下,carrierwave 会创建很多拇指。

【讨论】:

  • 暂时宁愿坚持使用carrierwave...但如果我真的不能让它工作,我会尝试dragonfly。
【解决方案2】:

尝试以下语法之一:

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

【讨论】:

  • 谢谢,两个都试过了。第一个版本给出错误“/uploads/IMG_0185.jpg:AvatarUploader 的未定义方法 `thumb'”。第二个版本给出错误“版本拇指不存在!”还有其他建议吗?感谢您的帮助。
  • 好的,刚刚编辑了我的答案,让我知道底部是否有帮助。
  • 我猜你的 AvatarUpload 课程末尾还有另一个 end,我猜它刚刚被切断了?
  • 是的,在课程的底部还有结尾。添加公众,但仍然遇到相同的错误。只是对为什么当它明显存在时它不会将拇指识别为一种方法感到困惑。
  • 我有一个几乎相同的设置,嗯...我们可以看看它设置的模型吗?
【解决方案3】:

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

image.avatar.url(:thumb)

上面的语法很好

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

image.avatar.recreate_versions!

在您可能缺少的所有头像上。

【讨论】:

    【解决方案4】:

    我建议使用

    include CarrierWave::MiniMagick
    

    而不是

    include CarrierWave::RMagick
    

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

    【讨论】:

    • 我的问题是我一开始都启用/取消了注释,在阅读了你的答案后,我刚刚启用了 mini magick 但那不起作用,然后我评论并启用了 rmagick 并且做到了..
    猜你喜欢
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多