Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 回形针,S3,Heroku:缺少图像_Ruby On Rails_Ruby_Amazon Web Services_Heroku_Amazon S3 - Fatal编程技术网

Ruby on rails 回形针,S3,Heroku:缺少图像

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_

长时间观看,第一次询问。我一直在寻找这个话题,但我不相信我找到了答案

我有一个有图像的后期模型。我正在使用回形针宝石,保存到AmazonS3,并在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/
这是我的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']
  }
  }