Должны ли мы использовать что-то еще помимо image-url
и других в Rails 4? Они возвращают разные значения, которые кажутся бессмысленными. Если я logo.png
в /app/assets/images/logo.png
и я делаю следующее, это то , что я получаю:
image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work
image-path("logo.png") -> "/images/logo.png"
asset-url("logo.png") -> url("/logo.png")
Конечно, ничего из этого не работает, потому что они нужны как минимум /assets
спереди.
ОБНОВЛЕНИЕ : На самом деле, я только что заметил, как мне получить доступ к изображениям в Rails 4? У меня есть изображение на/app/assets/images/logo.png
. Но если я перейду на любой из следующих URL-адресов, я все равно не увижу свое изображение:
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
ОБНОВЛЕНИЕ 2 : Единственный способ вызвать свойlogo.png
- это переместить его в/app/assets/stylesheets
каталог и затемвызвать:
http://localhost:3000/assets/logo.png
asset_path("logo.png", image)
.css
файла или в.css.scss
файле?.css.scss
файлаОтветы:
У меня сама была эта проблема. 3 пункта, которые, надеюсь, помогут:
app/assets/images
каталог, вы должны иметь возможность вызывать изображение напрямую без префикса в пути. т.е.image_url('logo.png')
background-image:
свойство, тогда ваша строка кода должна бытьbackground-image: image-url('logo.png')
. Это работает как для таблиц стилей less, так и для sass. Если вы используете его встроенным в представление, вам нужно будет использовать встроенныйimage_tag
помощник в rails для вывода изображения. Еще раз без префикса<%= image_tag 'logo.png' %>
rake assets:precompile
для генерации активов илиrake assets:precompile RAILS_ENV=production
для производства, в противном случае ваша производственная среда не будет иметь отпечатанных активов при загрузке страницы.Также для этих команд в пункте 3 вам нужно будет поставить перед ними префикс,
bundle exec
если вы используете Bundler.источник
Ваша первая формулировка
image_url('logo.png')
верна. Если изображение найдено, оно сгенерирует путь/assets/logo.png
(плюс хэш в производстве). Однако, если Rails не может найти образ, который вы назвали, он вернется к нему/images/logo.png
.Следующий вопрос: почему Rails не находит ваше изображение? Если вы поместите его в app / assets / images / logo.png, вы сможете получить к нему доступ, перейдя в
http://localhost:3000/assets/logo.png
.Если это сработает, но ваш CSS не обновляется, возможно, вам потребуется очистить кеш. Удалите
tmp/cache/assets
из каталога вашего проекта и перезапустите сервер (вебрик и т.д.).Если это не удается, вы также можете попробовать просто использовать
background-image: url(logo.png);
Это заставит ваш CSS искать файлы с тем же относительным путем (который в данном случае / assets).источник
Я только что узнал, что с помощью
asset_url
помощника вы решите эту проблему.источник
undefined local variable or method 'image'
ошибка.asset_path("<your_path>", type: :image)
У меня была аналогичная проблема при попытке добавить фоновое изображение с помощью встроенного CSS. Нет необходимости указывать папку изображений из-за того, как работает синхронизация ресурсов.
Это сработало для меня:
источник
assets/img.jpg
или../assets/img.jpg
что явно не работает ни в одном каталоге./assets/img.jpg
делает. TYRails 4.0.0 будет выглядеть как изображение, определенное
image-url
в той же структуре каталогов, что и ваш файл css.Например, если ваш css в
assets/stylesheets/main.css.scss
,image-url('logo.png')
становитсяurl(/assets/logo.png)
.Если вы переместите файл css в
assets/stylesheets/cpanel/main.css.scss
,image-url('logo.png')
станет/assets/cpanel/logo.png
.Если вы хотите использовать изображение непосредственно в каталоге assets / images, вы можете использовать
asset-url('logo.png')
источник
для таблиц стилей: url (asset_path ('image.jpg'))
источник
url(asset_path('image.jpg')
,url('image.jpg')
иimage-url('image.jpg')
? Я работаю с Rails 5.0.0.1 иurl()
отлично работает в файлах SCSS и в файлах html.erb, которые я использую,asset_path()
поэтому я хотел бы знать правильный путь. Заранее спасибо.asset_path
добавить к файлу изображения дайджест-приложение. На самом деле это для производства, после каждого развертывания приложение дайджеста будет изменено, и браузер пользователя загрузит новую версию изображений.