Как предоставить локальные URL-адреса изображений только из приложения Rails 5 API

У нас есть только API, приложение Rails 5 (поэтому нет пайплайна). Мы хотим, чтобы API предоставлял URL-адрес изображения на нашем сервере. Это изображение предоставлено моделью. Это изображение может жить в app/assets/images или public/images. Какой метод добавит текущий хост/домен к имени файла в модели Rails?

Мы ожидали, что ActionController::Base.helpers.asset_url("solar.png") сработает, но это возвращает "\solar.png".

Мы установили default_url_options на «localhost: 3000».

Было бы приемлемо, чтобы модель предоставляла только имя файла, а визуализатор представления контроллера/json предоставлял часть URL-адреса через помощника. Я говорю «приемлемо», потому что наша модель решает, какое изображение должно быть возвращено. Иногда это изображение с локального сервера, иногда это абсолютный URL-адрес с другого сервера. Если контроллер предоставляет часть URL, нам придется обрабатывать эти два случая отдельно.


person Matt Scilipoti    schedule 18.07.2019    source источник


Ответы (1)


Быстрый ответ:

# development.rb
config.action_controller.asset_host = "http://localhost:3000"
# production.rb
config.action_controller.asset_host = "http://yourdomain.com"

Распространенной ошибкой является установка config.action_controller.default_url_options

Помните, что у вас есть несколько мест для установки имени хоста:

config.action_controller.default_url_options
config.action_mailer.default_url_options
config.action_controller.asset_host
# Maybe others, I'm not sure

Часто это одно и то же значение, но не всегда.

person jpheos    schedule 19.07.2019