Search code examples
ruby-on-railsrubyruby-on-rails-3thumbnailsfile-type

link_to file name with a thumbnail of file type


Ruby on Rails 3.2, I have a table that shows files by basename. I would like to show a thumbnail next to the name of the file type. So if its a pdf file I would show a little image indicating its a pdf file. The files show the file type but I would like an image also to make it easier to pick out.

This is my loop for my table showing the file names only. How would I add a image based on the file type?

<tbody>
  <% @files.each do |file| %>
    <tr>
      <td><%= link_to File.basename(file).upcase, file[/\/.*/] %></td>
    </tr>
  <% end %>
</tbody>

This is one example of a file being viewed.

ENGLISH_FACTSHEET2013_V3.PDF

I am hoping there is a gem or something.


Solution

  • A simple approach could be a helper that checks for the file extension with some regex or some simple string comparison, then creates a image_tag based on the type:

    def extension_image(file_name)
      if file_name.upcase.include?('.PDF')
        image_tag 'pdf.png'
      elsif file_name.upcase.include?('.JPG')
        ...
      ...
    end
    

    Then on your view:

    <td>
      <%= extension_image(File.basename(file)) %>
      <%= link_to File.basename(file).upcase, file[/\/.*/] %>
    </td>