Rails 3 Rendering Binary Content

kals picture kals · Jun 1, 2011 · Viewed 7.4k times · Source

I need to render binary content(images) on web page. I'm saving images in the database with datatype binary. Now I need to iterate available images from the database and render on webpage.

Please check the below code that I'm doing. Icon is the image column name in material.

// iterating all materials
<% @materials.each do |material| %>
     // for each material
     <span><%= image_tag(material.icon) %></span>
<% end %>

Any help would be greatly appreciated..

Answer

muffinista picture muffinista · Jun 1, 2011

You need to add an action to your controller along these lines (cribbed from here):

def image
    @material = Material.find(params[:id])
    send_data @material.icon, :type => 'image/png',:disposition => 'inline'
end

Then call the path to that action in your image_tag. You obviously need to make sure the :type field has the right MIME type, add a route, etc.