【发布时间】:2019-05-14 02:12:45
【问题描述】:
我设置了 Rails 5.2 API,并遵循了有关如何将图像附加到模型对象的文档 - 一切正常。我遇到的问题是我想在 JSON 对象中返回附件的公共 URL,以便我可以在我的 React 前端中使用该 URL 作为 <img src... 中的源。有没有办法从 AWS S3 存储桶返回实际的 URL,如果单击,图像会显示在哪里?
现在,我尝试了rails_blob_path、service_url,我确实得到了 URL,但它们都没有真正按照我希望的方式呈现图像。有什么解决方法吗?
再次,只需要来自 s3 的附件的实际公共 URL,这样我就可以将其插入到 <img> 内的 src 属性中并显示它。谢谢。
我的 development.rb 文件配置了config.active_stoarge.service = :amazon。
我的 storage.yml 文件的 amazon 配置如下:
amazon:
service: S3
access_key_id: <%= Rails.application.secrets.amazon[:access_key] %>
secret_access_key: <%= Rails.application.secrets.amazon[:secret_key] %>
region: us-east-2
bucket: my_bucket_name_here
ActiveStorage 5.2.2
Rails 5.2.2
【问题讨论】:
-
service_url返回什么? -
您能否发布您的主动存储配置文件并注意您在哪个环境中看到了这种行为?此外,您使用的是哪个确切版本的 activestorage 和 rails(来自 Gemfile.lock)
rails_blob_path和rails_blob_url在最新的稳定 rails 中都按预期工作 -
好的,所以我刚刚获得了指向 s3 上图像的直接链接,地址为
service_url。我是否正确假设链接永远不会改变,并且只要它存在就总是指向 s3 上的图像? @LeninRajRajasekaran @Jay Dorsey -
我为此找到了另一种可能的解决方案。试试
url_for助手:Rails.application.routes.url_helpers.url_for(object.attachment)
标签: ruby-on-rails reactjs amazon-s3 rails-activestorage