Render files and images for Rails 5 api only

Posted on

I had built a rails 5 api only app. By installing the app only version of rails, I lost the view layer of rails. No app/assets, or public files.

This is of course the intended design for an api application but my projects also needed to reference locally stored images. How to overcome?

Example: I need to fetch http://mysite/images/image5.jpg

Solution:

#config/routes.rb . #add a route

get ‘images/:id’, :to => ‘images#show’

#app/controllers/images_controller.rb #create this file, make class ImagesController,

#add method below

def show
id = params[:id]  #this will get the filename
send_file Rails.root.join(“public”, “#{id}.jpg”), type: “image/gif”, disposition: “inline” .          #send the file requested, files stored in public
end

 

This is a word around and there could (probably is) a better way, but it worked to get the project going. During refactor, we can change this and look for a better solution of need be. This was better than having to start a new rails5 app from scratch.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s