Render files and images for Rails 5 api only
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.