Ruby on rails 仅当contenttype为image时,如何设置回形针样式?
我正在使用以下工具:Ruby on rails 仅当contenttype为image时,如何设置回形针样式?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在使用以下工具: has_attached_file :file,:styles => { :thumbnail => '320x240!'},:url => "/images/:attachment/:id/:style/:basename.:extension",:path => ":rails_root/public/images/:attachment/:id/:style/:basename.:extension" validates_attachment
has_attached_file :file,:styles => { :thumbnail => '320x240!'},:url => "/images/:attachment/:id/:style/:basename.:extension",:path => ":rails_root/public/images/:attachment/:id/:style/:basename.:extension"
validates_attachment_content_type :file, :content_type => [ 'image/gif', 'image/png', 'image/x-png', 'image/jpeg', 'image/pjpeg', 'image/jpg' ]
上传图像和视频。如果我使用
:style=>{}
则图像不会上载。仅当文件的内容类型为图像时,我才想使用:style
方法。您可以使用lambda内部的条件,很抱歉格式不好:
has_attached_file :file, :styles => lambda
{ |a|
if a.instance.is_image?
{:thumbnail => "320x240!"}
end
}
def is_image?
return false unless asset.content_type
['image/jpeg', 'image/pjpeg', 'image/gif', 'image/png', 'image/x-png', 'image/jpg'].include?(asset.content_type)
end
2016年更新:
大多数向上投票的答案仍然有效,但如果它不是预期的类型(例如,您不想处理的PDF而不是图像),则需要返回一个空哈希值,否则您将遇到TypeError-cannotdup NilClass
问题
为了简洁起见,使用三元混合物进行取样:
has_attached_file :file, :styles => lambda { |a| a.instance.is_image? ? {:thumbnail => "320x240!"} : {} }
您应该使用before\u post\u process For
is\u image
可能(asset.content\u type | | |“”).split(“/”)。first==“image”
。或者简单地说:/image\/.match(asset.content\u type)
。