Rails 5.2 - URL-адрес образа активного хранилища гибридного приложения (Active Storage + S3) не создается на стороне API - PullRequest
0 голосов
/ 13 октября 2018

Я создал гибридное приложение 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.

Благодарим вас за отзыв о том, что мне здесь не хватает.

Спасибо,

1 Ответ

0 голосов
/ 15 октября 2018

Решил это.В моем сериализаторе вместо:

def image
  rails_blob_path(object.image, only_path: true) if object.image.attached?  
end

Я использую Active Storage service_url метод, такой как:

def image
  object.image.service_url if object.image.attached?
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...