Я создал гибридное приложение Rails 5.2 с представлениями и контроллером API.Я разрешаю пользователям загружать файлы благодаря активному хранилищу и S3.
Моя активная служба хранения генерирует URL-адрес изображения S3 в моих представлениях Rails, как показано в журналах:
Сгенерированный URL-адрес для файла с ключом: HsBwx3LiGxmSJtDB2pu9nEiJ (https://[DOMAIN_NAME].s3.ca -central-1.amazonaws.com / HsBwx3LiGxmSJtDB2pu9nEiJ? response-content-disposition = ....
К сожалению, на стороне API URL-адрес изображения выглядит следующим образом:
/ rails / active_storage / blobs /...
Идея состоит в использовании этого API в Vue SPA.
Модель
Моя модель довольно проста: 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, все env. переменные установлены. Мои производственные настройки выглядят нормально:
config.active_storage.service = :amazon
Тестирование на Postman и в моем приложении Vue, все еще получая URL-адрес этого блога, а не Amazon.
Благодарим вас за отзыв о том, что мне здесь не хватает.
Спасибо,