【问题标题】:NoMethodError Exception: super: no superclass method 'transformation_command' for Paperclip::CropperNoMethodError 异常:超级:Paperclip::Cropper 没有超类方法“transformation_command”
【发布时间】:2014-05-26 01:57:54
【问题描述】:

我正在关注 Episode: 182-cropping-images 以裁剪用户个人资料图片。

AR 关系是用户有一个个人资料图像: 在用户模型中:

 has_one :profile_image, :as => :imageable, :class_name => 'ProfileImage', :dependent => :destroy

在 ProfileImage 模型中:

 class ProfileImage < Image
   has_attached_file :data, :styles => {
  :large => "160x160>",
  :grid => "114x114>",
  :medium => "80x80>",
  :list => "60x60>",
  :square => "32x32!",
  :tiny => "20x20!",
  :icon => "16x16!"
}, :processors => [:cropper]

attr_accessor :crop_x, :crop_y, :crop_w, :crop_h


def cropping?
  !crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
end

def avatar_geometry(style = :original)
  @geometry ||= {}
  @geometry[style] ||= Paperclip::Geometry.from_file(data.path(style))
end

在 lib/paperclip_processors/cropper.rb 库中:

 module Paperclip
  class Cropper < Thumbnail
    def transformation_command
      if crop_command
        crop_command + super.join(' ').sub(/ -crop \S+/, '').split(' ')
      else
        super
      end
    end

    def crop_command
      target = @attachment.instance
      if target.cropping?
        ["-crop", "#{target.crop_w}x#{target.crop_h}+#{target.crop_x}+#{target.crop_y}"]
      end
    end
  end
end

以及所有其他内容,例如 Episode: 182-cropping-images with solution 现在,我收到错误:

 NoMethodError Exception: super: no superclass method  'transformation_command' for Paperclip::Cropper

排队:

crop_command + super.join(' ').sub(/ -crop \S+/, '').split(' ')

如果我删除,+ super.join(' ').sub(/ -crop \S+/, '').split(' ')

它将所有图像样式裁剪为相同的高度宽度。请指导。

【问题讨论】:

  • 一切看起来都正确。您是否考虑过在 def transformation_command 方法中的 if crop_command 之前检查 super 可能返回/或工作的内容?
  • @Surya, crop_command 返回正确的命令。但是super 会返回标题中的错误。我通过 lib/paperclip_processors/cropper.rb lib 的调试器检查了它:就在 crop_command + super.join(' ').sub(/ -crop \S+/, '').split(' ') 之前
  • 奇怪,我检查了 Paperclip 的 Thumbnail 类,transformation_command 存在那里。这就是为什么我问super 是否在transformation_command 方法中的if crop_command 行之前返回数组。
  • 这个周末我会尝试在我的机器上设置回形针。让我们看看我能不能让这个工作。 :)
  • 这个错误只会发生(基于Paperclip:: Thumbnail#transformation_command的来源,你的cropper.rb我被加载之后你的另一个Thumbnail被加载但是 Paperclip gem 加载之前。因此,请检查您的加载路径/顺序,并确保您从正确的类派生。您可以通过以下方式进行测试:class Cropper &lt; Paperclip::Thumbnail 因为如果我的理论是正确的,您现在应该得到一个未初始化的常量错误。

标签: ruby-on-rails imagemagick


【解决方案1】:

只看你得到的错误......

我的猜测是这条线正在落到其他地方

if crop_command
  crop_command + super.join(' ').sub(/ -crop \S+/, '').split(' ')
else
  super
end

而且您的 Thumbnail 类设置不正确,因此当您调用 super 时,它会查找不存在的 Thumbnail#transformation_command。

查看文档,此方法依赖于正确安装和设置 ImageMagick

你关注这个step了吗?

【讨论】:

    猜你喜欢
    • 2021-06-08
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多