Paperclip,S3,Heroku:缺少图像

长时间观看,第一次问问。 我搜索过这个主题,但不相信我找到了答案。

我有一个有图像的Post模型。 我正在使用Paperclip gem,保存到Amazon S3,并在Heroku上托管。

文件上传表单工作正常,因为我可以看到图像被发送到我的S3存储桶。

问题在于,图像实际上并未在生产中显示。

这是我的模特:

class Post " } validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ 

这是我的config / production.rb:

 # Required for Paperclip / AWS config.paperclip_defaults = { :storage => :s3, :s3_credentials => { :bucket => ENV['S3_BUCKET_NAME'], :access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] } } 

这是我的show.html.haml文件:

 .clearfix .post_image_description = image_tag @post.image.url(:medium) .description= simple_format(@post.address) .description= simple_format(@post.description) 

@post.image.url应该不够吗? 正确路由到图像可能会遗漏什么?

这是我在拉Heroku Logs时看到的:

 2015-06-23T15:38:26.181383+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/images/medium/missing.png"): 

作为参考,这是我的项目存储库: https : //github.com/lucasvocos/pitstop

如果问题中还有其他内容,请告诉我。 因为这是我第一次问。 感谢大家。

您需要为s3 bucket变量设置heroku环境变量:

 heroku config:set S3_BUCKET_NAME='Your Bucket Name' heroku config:set AWS_ACCESS_KEY_ID='Your AWS ID' heroku config:set AWS_SECRET_ACCESS_KEY='Your AWS Secrete Key' 

我有一个类似的问题,上传工作但显示器显示链接断开。 我检查了链接的源,它没有指向S3上显示的图像的URL。 我必须将主机名添加到我的paperclip配置中

  config.paperclip_defaults = { :storage => :s3, :s3_host_name => 's3-us-west-2.amazonaws.com', :s3_credentials => { :bucket => ENV['S3_BUCKET_NAME'], :access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] } } 

你必须在\ public \ images \ medium中提交missing.png。(确保存在\ public \ images \ medium \ missing.png,然后提交)。 在您上传某些有效图像之前,此图像是默认图像。

但是,也建议在模型中定义url,如下所示:

 has_attached_file :image, styles: { medium: "700x500#", small: "350x250>" }, :url => '/:class/:attachment/:id/:style_:basename.:extension'