我认为我有以下内容:
<%= 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中呈现,而是在本地呈现,并且我的app / assets / images文件夹中有“portrait3.jpeg”文件。
编辑:我意识到我在heroku中使用了create而没有实际连接到S3或其他任何东西,这可能不起作用,因为heroku不允许在其服务器上存储数据库,我相信。我把它改成了新的,它仍然不起作用。答案 0 :(得分:0)
所以我做了一些愚蠢的事情。首先,我忘了在控制器中要求RMagick,其次我需要做heroku run rake db:migrate。