Ruby on rails Rails API ActiveStorage:获取公共URL以显示AWS S3存储桶中的图像?

Ruby on rails Rails API ActiveStorage:获取公共URL以显示AWS S3存储桶中的图像?,ruby-on-rails,reactjs,amazon-s3,rails-activestorage,Ruby On Rails,Reactjs,Amazon S3,Rails Activestorage,我已经设置了Rails5.2API,并遵循了关于如何将图像附加到模型对象的文档,这些都很好。我遇到的问题是我想在JSON对象中返回附件的公共URL,这样我就可以在我的React前端的中使用该URL作为源。有没有一种方法可以从AWS S3 bucket返回实际的URL,如果单击该bucket,图像就会显示出来 现在,我尝试了rails\u blob\u path,service\u url,我确实得到了url作为回报,但它们都没有按照我希望的方式呈现图像。有什么解决办法吗 同样,只需要从s3获取附

我已经设置了Rails5.2API,并遵循了关于如何将图像附加到模型对象的文档,这些都很好。我遇到的问题是我想在JSON对象中返回附件的公共URL,这样我就可以在我的React前端的
中使用该URL作为源。有没有一种方法可以从AWS S3 bucket返回实际的URL,如果单击该bucket,图像就会显示出来

现在,我尝试了
rails\u blob\u path
service\u url
,我确实得到了url作为回报,但它们都没有按照我希望的方式呈现图像。有什么解决办法吗

同样,只需要从s3获取附件的实际公共URL,这样我就可以将它插入到
中的
src
属性中并显示它。谢谢

My development.rb文件配置
config.active\u stoarge.service=:amazon

My storage.yml文件的amazon配置如下:
amazon:
服务:S3
访问密钥id:
机密\u访问\u密钥:
地区:美国东部-2
桶:我的桶,我的名字

ActiveStorage 5.2.2


Rails 5.2.2

您应该能够使用
Rails\u blob\u url
Rails\u blob\u path
创建指向实际文件的链接


什么是
service\u url
返回?能否发布活动存储的配置文件,并注意您在哪个环境中看到这种行为?另外,您使用的是哪个版本的activestorage和rails(来自Gemfile.lock)
rails\u blob\u path
rails\u blob\u url
在最新稳定的railsOkay中都能正常工作,所以我刚刚通过
service\u url
获得了s3上图像的直接链接。我假设链接永远不会改变,只要它存在,就始终指向s3上的图像,这对吗@Leninrajasekaran@Jay DorseyI发现了另一个潜在的解决方案。请尝试
url\u for
helper:
Rails.application.routes.url\u helpers.url\u for(object.attachment)
它们都返回到我的应用程序中的图像的相对路径,而不是S3处图像的外部链接。我想找到一种方法来查看S3中的直接图像URL。我感谢你的帮助@tman091是否在本地开发环境中?还是在已部署的应用程序中?如果您在线学习了教程,您可能已经将其配置为使用
service:Disk
进行本地开发,这将在本地存储图像,而不是在S3上。您可以将其交换为使用相同的生产配置(并在本地添加您的环境变量),使其推送到S3。如果是生产环境,请确保为您的环境将配置设置为
service:s3
这些都是优点。它位于本地开发环境中,但我将我的storage.yml配置为指向s3服务,而不是像您提到的那样指向磁盘。我可以确认一切都在向s3推进,没有任何问题,所以我知道这是正确设置的。