Не удается связать изображение с приложением HTML в Rails - PullRequest
1 голос
/ 10 апреля 2019

Я занимаюсь разработкой веб-приложения с использованием Ruby on Rails.У меня есть изображение для добавления на сайт, и я попытался использовать HTML-тег «img src» для вызова локального изображения, но это не сработает.Если я использую ruby, чтобы вызвать его, используя метод image-tag, он работает нормально.Мне просто интересно, почему он никогда не работает с HTML.

Например, я добавляю изображение в приложение> assets> images> image1.png

В файле View добавляюHMTL выглядит следующим образом:

 <img src="/app/assets/images/image1.png">

Не загружается

Тем не менее, если я введу этот код в том же месте:

<%= image-tag: "image1.png" %>

Работает нормально.

Кто-нибудь знает, почему это происходит?Я знаю, что у меня есть обходной путь, но я предпочел бы знать, почему мой HTML-тег имеет проблему с локальными файлами, но ссылки на файлы в Интернете просто отлично.Я новичок в кодировании.Ура!

Ответы [ 5 ]

2 голосов
/ 10 апреля 2019

Хороший вопрос.Компилятор ресурсов Rails важен, но создает некоторые проблемы, подобные этой.

Компилятор ресурсов, вероятно, добавляет к имени файла отпечаток кэша.Вы можете использовать <%=asset_path('images/image1.png')%> в качестве значения атрибута src или продолжить использовать image_tag.

См. документ по активам Rails для получения дополнительной информации.

Помогает ли это?

0 голосов
/ 11 апреля 2019

Если вы хотите использовать тег img , вы должны:

<img src="<%= asset_path('image1.png') %>"/>

Без "/ images" и "/".

0 голосов
/ 10 апреля 2019

Проблема в том, какой путь вы используете. Вот краткая версия: Удалите app/ из URL изображения, и оно должно работать как положено.

Если вы запустите приложение с рабочим кодом, вы увидите, что это то, что image_tag уже делает для вас за кулисами, изучая HTML. Вы должны увидеть что-то вроде этого:

<img src="/assets/images/image1.png">

Обновление тега img для использования этого пути должно решить проблему.

Однако, вы должны использовать image_tag, если это возможно! Не углубляясь в технические подробности, если вы развернете свой сайт в рабочей версии с версией image_tag и посмотрите HTML, вы, вероятно, увидите что-то вроде этого:

<img src="/assets/images/image1-[sequence of characters].png">

Это поможет гарантировать, что клиенты удаляют устаревшие активы из своих кэшей по мере необходимости - технические подробности можно найти здесь (см. Раздел 1.2). Если вы жестко закодируете изображение, вы упустите все функции, предоставляемые конвейером ресурсов.

0 голосов
/ 10 апреля 2019

Похоже, ваш синтаксис неверен для помощника image_tag. Попробуйте это:

<%= image_tag "image1.png" %>

Больше информации в документации по Rails

0 голосов
/ 10 апреля 2019

вы можете попробовать на примере онлайн? Я предполагаю, что ruby ​​не находит ваше изображение в каталоге.

<img src ="https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Googleplex_HQ_%28cropped%29.jpg/250px-Googleplex_HQ_%28cropped%29.jpg"> </img>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...