6
votes

I'm using Rails 3 paperclip and allow users to upload attachments to the attachment model.

If the file is an image, the app generates image previews. If the file is not, it only uploads the file (no image previews).

Now I would like to display a list of all the attachments in the DB. So I use attachment.attachment(:large) and that works fine for image attachments, but errors (obviously) for non-image attachments.

What's a good way to check if it's an image attachment or not? If not, I'd like to display a standard static image. Any suggestions? thanks

4

4 Answers

7
votes

This is what I did in my view:

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

This assumes that your model is attachment, and my file, I so called attachment.

So you could do something like:

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

Check attachment.attachment.attachment_content_type

For example, it might be: "image/jpeg"

0
votes

You can create a migration that adds a attachment_content_type field of type string to your attachment table. When you create an attachment, paperclip stores the type of the file in that field. You can then check if the file type is something like "image/jpeg".

0
votes

Maybe you could use default_url option? That would be shown if the real thumbnail doesn't exist.

http://www.suffix.be/blog/default-image-paperclp