我正在为Ruby on Rails构建的网站创建google产品列表。该网站有多家商店,且商店都有自己的前端,因此他们希望每个商店都有Google产品Feed。
我遇到的问题是,如果我使用url_for(image),那么我会得到该商店上图像的URL。但是主动存储的工作方式是在默认情况下持续5分钟的临时URL上。因此,链接将无法在Feed上处理完毕。
图像托管在S3存储桶中,因此我可以获得service_url。但是Google不喜欢将图片从单独的域发送到商店。有没有办法从stores域获得一个永久的干净URL?
答案 0 :(得分:3)
我认为您追求的目标不容易实现。 Active Storage似乎不支持永久性的非过期URL:"Request has expired" when using S3 with Active Storage
取决于您的设置,可能会有一个有用的(主要是)无黑客的解决方法。就我而言,我在拥有要链接到的文件的记录上设置了自定义show
操作:
redirect_to url_for(@record_name.file)
然后,像往常一样,在我的应用程序中使用路径助手进行记录show
动作,只是通过即将到期的url_for
呈现我想要的东西。
答案 1 :(得分:1)
您可以使用以下方法获得Active Storage附件的完整URL:
FullName
这将提供完整的URL,而不仅仅是路径,并且在 Rails 5.2 +
上运行良好答案 2 :(得分:0)
rails_blob_url(image, disposition: "attachment")