Rails PaperClip附件,如何知道是否有图像缩略图?

6
我正在使用Rails 3的paperclip,允许用户向附件模型上传附件。
如果文件是图像,则应用程序会生成图像预览。 如果不是,则仅上传文件(没有图像预览)。
现在我想显示数据库中所有附件的列表。因此,我使用attachment.attachment(:large),对于图像附件,它可以正常工作,但对于非图像附件则会出错(显然)。
有什么好方法可以检查它是否为图像附件? 如果不是,我想显示一个标准的静态图像。 有建议吗?谢谢
4个回答

7

这是我个人的看法和做法:

<% if !(@attachment.attachment.content_type =~ /^image/).nil? %>
<%= image_tag @attachment.attachment.url(:small) %>
<%end%>

假设您的模型是附件,我的文件名为attachment。那么您可以这样做: ```html

假设您的模型是附件,我的文件名为attachment。

那么您可以这样做:

```
<% if !(@attachment.attachment.content_type =~ /^image/).nil? %>
<%= image_tag @attachment.attachment.url(:small) %>
<%else%>
<%= image_tag "/path/to/image/default.png" %>
<%end%>

3

检查attachment.attachment.attachment_content_type

例如,它可能是:"image/jpeg"。


0

很遗憾,我不认为这个可行。如果完全没有附件(即:模型中的附件属性设置为 nil),那它可以工作,但对我来说并没有检测到缺失的缩略图文件。(顺便说一下,我使用的是 paperclip 2.3.1版本)。如果有什么我可能做错了的地方,我很想知道! - Craig Walker

0
您可以创建一个迁移,将字符串类型的附件内容类型字段添加到您的附件表中。当您创建一个附件时,paperclip会将文件的类型存储在该字段中。然后,您可以检查文件类型是否为"image/jpeg"之类的东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接