На мой взгляд, следующее:
<%= image_tag (url_for(:controller => 'app_images', :action => 'picture')) %>
Соответствующее действие контроллера:
def picture
image = AppImage.create(:path => ("portrait3.jpeg"))
image.set_file_from_path
portrait = Magick::Image::from_blob(image.file)[0]
send_data portrait.to_blob, :type => "image/jpeg", :disposition => "inline"
end
И метод модели для set_file_from_path:
def set_file_from_path
image = Magick::Image::from_blob(open(self.path).read)[0]
if image.rows > 400
resized = image.scale(400 * image.columns / image.rows, 400)
else
resized = image
end
self.file = resized.to_blob
end
По какой-то причине этот image_tag не отображается в Heroku, а отображается локально, и у меня есть файл «portrait3.jpeg» в папке app / assets / images.
РЕДАКТИРОВАТЬ: Я понял, что использовал create в heroku без фактического подключения к S3 или чему-либо еще, что может не работать, поскольку heroku не позволяет хранить базу данных на своих серверах, я считаю. Я поменял его на новый, но он все еще не работает.