Ruby on rails 回形针,S3,Heroku:缺少图像
长时间观看,第一次询问。我一直在寻找这个话题,但我不相信我找到了答案 我有一个有图像的后期模型。我正在使用回形针宝石,保存到AmazonS3,并在Heroku上托管 文件上传表单工作正常,因为我可以看到图像被发送到我的S3存储桶 问题是,这些图像实际上并没有在生产中显示出来 这是我的模型:Ruby on rails 回形针,S3,Heroku:缺少图像,ruby-on-rails,ruby,amazon-web-services,heroku,amazon-s3,Ruby On Rails,Ruby,Amazon Web Services,Heroku,Amazon S3,长时间观看,第一次询问。我一直在寻找这个话题,但我不相信我找到了答案 我有一个有图像的后期模型。我正在使用回形针宝石,保存到AmazonS3,并在Heroku上托管 文件上传表单工作正常,因为我可以看到图像被发送到我的S3存储桶 问题是,这些图像实际上并没有在生产中显示出来 这是我的模型: class Post < ActiveRecord::Base attr_accessor :image_file_name, :image_content_type, :image_file_
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/
这是我的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日志时看到的:
2015-06-23T15:38:26.181383+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/images/medium/missing.png"):
以下是我的项目存储库供参考:
请让我知道,如果有任何其他提供的问题,太。因为这是我第一次问。谢谢大家。您需要为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'
您必须在\public\images\medium中提交缺少的.png。(确保\public\images\medium\missing.png存在,然后提交)。在上载一些有效图像之前,此图像是默认图像 但是,也建议在模型中定义url,如下所示:
has_attached_file :image, styles: {
medium: "700x500#",
small: "350x250>" }, :url => '/:class/:attachment/:id/:style_:basename.:extension'
我有一个类似的问题,上传工作,但显示器显示一个断开的链接。我检查了链接的源代码,它没有指向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']
}
}
你们把环境设置为可验证的了吗?你们也上传了你们的生产桶吗?嗨,奈姆拉吉布,我已经这么做了。这些图像确实上传到我的S3存储桶中,问题是查看它们。@LucasVocos你看到heroku日志了吗?你在heroku做过迁移吗?另外,请尝试从heroku控制台访问图像字段。它的输出是什么?如果一切设置正确,就不会出现问题。我认为您的代码未能将prper url保存在DB表中。我在Heroku中运行了迁移,并得到以下结果:运行
rake DB:migrate
附加到终端。。。启动,运行.6820 ActiveRecord::SchemaMigrationLoad(1.5ms)选择“schema_migrations”。*从“schema_migrations”中,我不确定我是否遵循。上传的图像是有效的,并且正在被推到我的S3存储桶中。问题是,我认为它们的路由不正确。我已经完成了所有的步骤,但仍然会得到一个“缺少图像”错误,您发布的错误是关于missing.png。这张图片特别是在存储库中,而不是在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']
}
}