Paperclip 不显示图像,而是在 rails 中显示带有 amazon s3 的标题?

Paperclip does not show image but instead shows title with amazon s3 in rails?

我正在使用回形针和 amazon s3 为我的网站存储图像。在开发模式下没有 s3 的情况下一切正常,但是当我尝试使用 s3 时,它会显示图像的标题而不是图像。我已经复制了 heroku 指南 https://devcenter.heroku.com/articles/paperclip-s3.

中的内容

这是 gemfile

gem 'paperclip'
gem 'aws-sdk', '~> 2.3'

这在class个人资料profile.rb中

has_attached_file :avatar,
                       :styles => { :medium => "300x300>", :thumb => "100x100>" },
                       :default_url => ":style/missing.jpg"
    validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/

这是在production.rb

config.paperclip_defaults = {
    storage: :s3,
    s3_host_name: "s3-#{ENV['AWS_REGION']}.amazonaws.com",
    :s3_protocol => :https,
    s3_credentials: {
      bucket: ENV.fetch('S3_BUCKET_NAME'),
      access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
      secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
      s3_region: ENV.fetch('AWS_REGION'),
    }
  }

观看次数

<%= image_tag @user.profile.avatar.url(:medium) %>  

我已经复制了 heroku 指南并添加了主机名和 s3 协议位。这里有什么问题吗?

我已经按照 heroku 指南成功地在开发环境中使用 paperclip 将用户图像上传到 S3,我也可以在用户的​​个人资料中看到图像。

我的Gemfile:

gem 'paperclip'
gem 'aws-sdk-s3'

我的development.rb

config.paperclip_defaults = {
storage: :s3,
s3_host_name: "s3.#{ENV['AWS_REGION']}.amazonaws.com",
s3_protocol: :https,
s3_credentials: {
    bucket: ENV.fetch('S3_BUCKET_NAME'),
    access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
    s3_region: ENV.fetch('AWS_REGION'),
  }
}

你有这个(这可能导致了问题):

s3_host_name: "s3-#{ENV['AWS_REGION']}.amazonaws.com",

我有这个(s3 后的一个点):

s3_host_name: "s3.#{ENV['AWS_REGION']}.amazonaws.com",

我的user.rb和你的一样

has_attached_file :avatar,
                       :styles => { :medium => "300x300>", :thumb => "100x100>" },
                       :default_url => ":style/missing.jpg"

# Validate the attached image is image/jpg, image/png, etc
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/

我的show.html.erb

<%= image_tag @user.avatar.url(:medium) %>

我正在使用 rails 5.2 版本,上面的代码适用于我。还要检查您的 S3 存储桶是否具有 public 对象访问权限。