我创建了一个带有视图和 API 控制器的混合 Rails 5.2 应用程序。由于活动存储和 S3,我允许用户上传文件。
我的活动存储服务确实会在我的 Rails 视图中生成 S3 图像 URL,如日志中所示:
为密钥处的文件生成的 URL:HsBwx3LiGxmSJtDB2pu9nEiJ ( https://[DOMAIN_NAME].s3.ca-central-1.amazonaws.com/HsBwx3LiGxmSJtDB2pu9nEiJ?response-content-disposition= ....
不幸的是,在 API 端,图像 URL 如下所示:
/rails/active_storage/blob/...
这个想法是在 Vue SPA 中使用这个 API。
模型
我的模型非常简单:1产品模型与has_one_attached :image
.
串行器
我正在使用序列化程序来呈现该图像,例如:
include Rails.application.routes.url_helpers
...
def image
rails_blob_path(object.image, only_path: true) if object.image.attached?
end
API 控制器
在我的 API 控制器中,我将我的产品呈现为 json ,例如:
def index
@products = Product.all
render json: @products, each_serializer: ::ProductSerializer, status: :ok
end
配置
我在 Heroku 上托管,所有环境。瓦尔斯。被设置。我的生产设置看起来不错:
config.active_storage.service = :amazon
在 Postman 和我的 Vue 应用程序中进行测试,仍然得到那个 rails 博客 URL 而不是亚马逊的。
感谢您对我在这里缺少的内容的反馈。
谢谢,