Rails: каков URL к изображению, размещенному в ресурсах? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть изображение, размещенное на моем сервере rails в папке активов, я хотел бы получить доступ к этому изображению через URL, а не по пути, чтобы я мог отобразить его в своем компоненте реакции.

Как я могу найти URL для указанного изображения, чтобы при переходе к нему отображалось изображение?

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Насколько я знаю, вам нужно будет зайти в вашу папку public и затем в assets .

Найдите нужное изображение и скопируйте его имя.

Вам нужно будет назвать его следующим образом: /assets/img-name-033cce876b38fb47072fb3668a5.jpg или /assets/folder/ перед именем изображения, если оно находится в другой папке и т. Д..

0 голосов
/ 21 февраля 2019

Конвейер ресурсов Rails создает дайджест каждого актива и добавляет его к имени файла, поэтому имя не всегда одно и то же, вы не можете просто скопировать его и использовать его вечно (вы можете заставить рельсы воссоздать все дайджесты инапример, все URL-адреса изменены.

Я могу придумать несколько вариантов:

1 - отключить функцию дайджеста конвейера ресурсов. В конфигурационном файле вашей среды добавьте config.assets.digest = false и теперь имяне будет дайджеста в конце.Тем не менее, прочитайте документы, так как дайджест существует по причине, вы можете отключить ее, но лучше решить, что после прочтения документа.

https://guides.rubyonrails.org/asset_pipeline.html#turning-digests-off

2 - Переместите эти изображения в/ public Если вы переместите изображения в / public, они не будут скомпилированы конвейером ресурсов.

3 - Используйте драгоценный камень, например non-stupid-digest, чтобы выбрать, какие ресурсы должны иметь его https://rubygems.org/gems/non-stupid-digest-assets позволяет вам сконфигурировать некоторые ресурсы, чтобы конвейер активов не пропускал генерацию дайджеста, не отключая функцию для всех активов

4 - оставьте конвейер активов в покое и поместите URL-адреса где-то в html.Чтобы исправить текущий путь к изображению, вы можете использовать помощник image_path (например: image_path('something.png') возвращает /assets/something-123...890.png).Затем вы можете написать это в своем шаблоне, например:

<script>
  imageUrl = '<%= image_url('something.png') %>';
</script>

И у вас будет доступ к этой переменной imageUrl в вашем коде JavaScript.

0 голосов
/ 20 февраля 2019

Вы должны использовать image_tag.Если у вас есть «image.png» в ваших ресурсах, вы можете использовать

<%= image_tag "image.png" %>

, и это приведет к URL-адресу, подобному этому

/assets/image-bb14d53a12ca1aa006defb5c0f0923aa3c946f7e2dfd534846b3a1d3b8aac72e.png

При использовании image_tag, Rails создает случайныйтокен для аутентификации изображения.Вы не можете просто использовать <img src="/assets/image.png, потому что токена нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...