我的图片素材有拇指版本:
version :thumb, :if => :image? do
process :resize_to_fill => [118, 100]
end
现在我的非图像资产出现了RoutingError。我尝试在AssetUploader.rb中使用拇指方法进行黑客攻击:
def thumb
if has_image_extension?(file.original_filename)
super
else
"/assets/file_types/#{extension(file.original_filename)}.jpg"
end
end
这会产生错误(NoMethodError:super:没有超类方法`thumb'),这是有道理的。
有没有比在资产模型中制作thumb_url方法更好的解决方法?
答案 0 :(得分: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