1

我有我的图像资产的拇指版本:

version :thumb, :if => :image? do
  process :resize_to_fill => [118, 100]
end

现在,我的非图像资产出现 RoutingError。我尝试在 AssetUploader.rb 中破解 thumb 方法:

def thumb
  if has_image_extension?(file.original_filename)
    super
  else
    "/assets/file_types/#{extension(file.original_filename)}.jpg"
  end
end

这会产生一个错误(NoMethodError: super: no superclass method `thumb'),这是有道理的。

有没有比在 Asset 模型中创建 thumb_url 方法更好的方法来解决这个问题?

4

1 回答 1

0

首先version是 CarrierWave 类的一个实例的方法。第一个参数应该是一个符号,它将作为字符串附加到保存的文件名。

然而,该:if符号接收一个方法名称(需要实现)来决定是否应该创建版本。

问题是您的:image?方法是如何实现的!

我有一个天真的实现,在这里:

def image?( new_file )
  # TODO FIXME wrong way to check for image
  new_file.content_type.include?('image') && 
  !new_file.content_type.include?('photoshop') && 
  !new_file.content_type.include?('svg')
end
于 2012-12-14T15:31:27.657 回答