[英]Paperclip, S3, Heroku: Missing Image
长时间观看者,第一次询问。 我已经搜索了该主题,但不相信找到了答案。
我有一个具有图片的Post模型。 我正在使用Paperclip gem,保存到Amazon S3,并托管在Heroku上。
文件上传表单工作正常,因为我可以看到图像已发送到我的S3存储桶。
问题在于,这些图像实际上并未在生产中显示。
这是我的模型:
class Post < ActiveRecord::Base
attr_accessor :image_file_name, :image_content_type, :image_file_size, :image_updated_at
belongs_to :user
has_many :reviews
has_attached_file :image, styles: { medium: "700x500#", small: "350x250>" }
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存储桶变量设置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。 我必须将主机名添加到我的回形针配置中
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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.