gpt4 book ai didi

ruby-on-rails - Minimagick:未定义方法 `destroy!' 为 true:TrueClass auto_orient

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:12 27 4
gpt4 key购买 nike

我上传了一张按预期工作的图片,除非我向 ImageUploader 添加了一个额外的进程 (auto_orient)。代码如下:

class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick

retina!

if Rails.env.development?
def store_dir
"#{Rails.root}/public/uploads/account_#{model.account_id}/product_#{model.product_id}/image_#{model.id}"
end
elsif Rails.env.staging? || Rails.env.production?
def store_dir
"uploads/account_#{model.account_id}/product_#{model.product_id}/image_#{model.id}"
end
end

def default_url
"/assets/no_image_500px.png"
end


process :auto_orient
process :resize_and_pad => [500, 500]

version :thumb_100 do
process :resize_and_pad => [100, 100]
end

version :shopping_cart do
process :resize_to_fill => [200, 200]
process :retina_quality => 100
end

version :store_page do
process :resize_to_fill => [336, 336]
process :retina_quality => 100
end

version :product_page do
process :resize_to_fill => [426, 426]
process :retina_quality => 100
end

def extension_white_list
%w(jpg jpeg png tiff)
end

def auto_orient
manipulate! do |img|
img = img.auto_orient
end
end

end

Auto_orient 服务于用户从他们的手机上传图片的目的,图片是自动定向的。此当前代码适用于移动上传的图像,但是当我尝试从桌面上的 Web 应用程序上传图像时,我收到:“未定义的方法‘销毁!’对于 true:TrueClass"。

我看过 documentation对于 minimagick 和想法将 auto_orient 更改为 auto_orient!但后来我被告知 minimagick 没有名为 auto_orient 的方法!为什么用这种方法调用 destroy ?

最佳答案

看起来像是在操纵!在 auto_orient 返回时调用 destroy 方法(它最终是一个 bool 值 (true))。因此无法在 bool 值上调用 delete 的错误。为了解决这个问题,我添加了 ruby​​ 的“tap”方法以将图像传递给 block ,然后立即返回图像:

  def auto_orient
manipulate! do |img|
img.tap(&:auto_orient)
end
end

关于ruby-on-rails - Minimagick:未定义方法 `destroy!' 为 true:TrueClass auto_orient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com