2012-12-14 19 views
1

我有我的形象资产的拇指版本标准大拇指:Carrierwave;覆盖“拇指”的方法来对非图像资产

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:超:没有超类方法`拇指'),这是有意义的。

有没有比在资产模型中生成thumb_url方法更好的解决方法?

回答

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