Есть странная проблема с Rails 4 на Heroku. Когда изображения компилируются, к ним добавляются хэши, но для ссылки на эти файлы из CSS не корректируется правильное имя. Вот что я имею в виду. У меня есть файл с именем logo.png. И все же, когда он появляется на героку, он рассматривается как:
/assets/logo-200a00a193ed5e297bb09ddd96afb953.png
Однако CSS все еще утверждает:
background-image:url("./logo.png");
Результат: изображение не отображается. Кто-нибудь сталкивался с этим? Как это можно решить?
ruby-on-rails
heroku
ruby-on-rails-4
Ник ONeill
источник
источник
Ответы:
У звездочек вместе с Sass есть несколько отличных помощников, которых вы можете использовать для выполнения работы. Звездочки будут только обрабатывать эти помощник , если ваши расширения таблицы стилей файлов либо
.css.scss
или.css.sass
.Изображение конкретного помощника:
Агностический помощник:
Или, если вы хотите встроить данные изображения в файл CSS:
источник
asset-data-url
работает для меня после того, как я изменил свой файл .css на файл .css.scss в приложении Rails 4. Спасибо!asset-data-url
поскольку он встраивает весь файл в таблицу стилей.sass-rails
я , наконец , в конечном итоге добавив расширение файла.scss
на нарушившего .css файл (ы) , так что они все заканчиваются.css.scss
, а затем заменить все экземплярыurl('blah.png')
сurl(asset-path('blah.png'))
(в моем случае все blah.pngs были в/vendor
ред папка).asset-url($asset)
следует использовать для звездочек 3, версия,$asset-type
вероятно, работает с более старой версиейНе знаю почему, но единственное , что работал для меня использовал asset_path вместо из image_path , даже если мои изображения находятся под активы / изображений / каталога:
Пример:
В рубине:
В .scss:
ОБНОВИТЬ:
Оказалось, что эти помощники актива происходят из самоцвета sass-rails (который я установил в своем проекте).
источник
background-image: url(asset-path('off.png'))
В Rails 4 вы можете легко ссылаться на изображение, расположенное
assets/images/
в ваших.SCSS
файлах, например так:Когда вы запускаете приложение в режиме разработки (
localhost:3000
), вы должны увидеть что-то вроде:В производственном режиме ваши активы будут иметь номера помощника кэша:
источник
production.rb
.Хеш заключается в том, что конвейер ресурсов и сервер оптимизируют кэширование http://guides.rubyonrails.org/asset_pipeline.html
Попробуйте что-то вроде этого:
Удачи
источник
.css
не работал для меня.В css
хотя исходный путь - /assets/images/banner.jpg, по соглашению вы должны добавить просто / assets / в метод url
источник
vendor/assets
,app/assets
,lib/assets
и т.д.) получают объединены в единую папку активов после завершения располагающий?/assets/banner.jpg
не будут работать. Вместо этого это будет что-то вроде/assets/banner-f719451f1e0ddd15f153c4eedde044b2.jpg
. TL; DR Не используйте это.Ни один из ответов не говорит о том, как, когда у меня будет
.css.erb
расширение, как ссылаться на изображения . Для меня работали как в производстве, так и в разработке :2.3.1 CSS и ERB
Конвейер активов автоматически оценивает ERB . Это означает, что если вы добавите расширение erb к ресурсу CSS (например,
application.css.erb
), тоasset_path
в ваших правилах CSS будут доступны подобные помощники :Это записывает путь к конкретному активу, на который ссылаются. В этом примере было бы целесообразно иметь изображение в одном из путей загрузки ресурса, например
app/assets/images/image.png
, на которое здесь будет ссылаться. Если это изображение уже доступно вpublic/assets
виде файла с отпечатками пальцев, то на этот путь ссылаются.Если вы хотите использовать URI данных - метод встраивания данных изображения непосредственно в файл CSS - вы можете использовать
asset_data_uri
помощник.Это вставит правильно отформатированный URI данных в источник CSS.
Обратите внимание, что закрывающий тег не может иметь стиль -%>.
источник
Только этот фрагмент не работает для меня:
Но переименование stylename.scss в stylename.css.scss помогает мне.
источник
Обращаясь к документам Rails, мы видим, что существует несколько способов ссылки на изображения из CSS. Просто перейдите в раздел 2.3.2.
Во-первых, убедитесь, что ваш файл CSS имеет расширение .scss, если это файл sass.
Далее вы можете использовать метод ruby, который действительно ужасен:
Или вы можете использовать конкретную форму, которая лучше:
Наконец, вы можете использовать общую форму:
источник
ЧТО Я НАШЕЛ ПОСЛЕ ЧАСОВ МУЖЕНИЯ С ЭТИМ:
РАБОТАЕТ :
Выше приведено что-то вроде:
"/assets/transparent_2x2-ec47061dbe4fb88d51ae1e7f41a146db.png"
Обратите внимание на начальный «/» , и он в кавычках . Также обратите внимание на расширение scss и помощник image_path в yourstylesheet.css.scss. Изображение находится в каталоге app / assets / images .
Не работает:
не работает, недействительное свойство:
Моим последним средством было поместить их в мое общедоступное ведро s3 и загрузить оттуда, но наконец-то все заработало.
источник
Интересно, что если я использую 'background-image', он не работает:
Но просто «фон», это делает:
источник
В некоторых случаях может быть применено следующее
logo {background: url (<% = asset_data_uri 'logo.png'%>)}
Источник: http://guides.rubyonrails.org/asset_pipeline.html
источник
При использовании gem 'sass-rails' в Rails 5, bootstrap 4, у меня сработало следующее:
в файле .scss:
в файле представления (например, .html.slim):
источник
Это должно привести вас туда каждый раз.
источник
По умолчанию Rails 4 не будет обслуживать ваши активы. Чтобы включить эту функцию, вам нужно зайти в config / application.rb и добавить эту строку:
https://devcenter.heroku.com/articles/rails-4-asset-pipeline#serve-assets
источник
В Rails 4 просто используйте
.hero { background-image: url("picture.jpg"); }
источник
Вы можете добавить в расширение CSS .erb. Ej: style.css.erb
Тогда вы можете положить:
источник
Это сработало для меня:
источник