При оформлении веб-страниц обычно используются темы, доступные в Интернете.Часто эти темы поставляются с пользовательскими шрифтами, для которых требуется источник шрифта.Правило CSS @ font-face позволяет вам задавать пользовательские шрифты в CSS.Шрифт можно загрузить с удаленного сервера или локально установленного шрифта на собственном компьютере пользователя.Чтобы предоставить шрифт с удаленного сервера, вы должны указать ресурс шрифта в функции url (), которая будет загружать и использовать шрифты.Если вы просматриваете правило @ font-face at, предоставленное данной темой, оно будет выглядеть примерно так:
@font-face {
font-family: 'Material-Design-Iconic-Font';
src: url('../fonts/Material-Design-Iconic-Font.woff2?v=2.2.0') format('woff2'), url('../fonts/Material-Design-Iconic-Font.woff?v=2.2.0') format('woff'), url('../fonts/Material-Design-Iconic-Font.ttf?v=2.2.0') format('truetype');
font-weight: normal;
font-style: normal;
}
Приведенное выше правило CSS, скорее всего, вызовет 404 кода состояния в браузере в качестве клиента.пытается загрузить файлы с вашего сервера по неверному пути.«../font/» просто поднимается на один каталог из текущего и ищет каталог шрифтов.Если вы используете Rails Assets Pipeline, это не будет работать.Независимо от того, работаете ли вы в производственной среде или среде разработки, если вы используете конвейер ресурсов, Rails будет искать ресурсы в каталоге ресурсов.Теперь в работе, если вы запускаете assets: precompile, то ресурсы будут предварительно скомпилированы в публичный каталог, и все, что находится в публичном каталоге, будет иметь приоритет над чем-либо в самом приложении.Вы определенно хотите, чтобы ваши ресурсы были предварительно скомпилированы в рабочей среде, чтобы ресурсы могли быстро обслуживаться вашим веб-сервером, а не попадать в стойку Rails.
В Rails ActionView есть ActionView :: Helpers :: AssetUrlHelper, который предоставляет несколько помощников, чтобы вы могли легко ссылаться на ваши ресурсы: asset_path, font_path, image_path, video_path и т. Д. Теперь в файле CSS илиВ файле SCSS вы, очевидно, не можете использовать вспомогательные методы Rails, поскольку они определены в сценариях ruby.Следовательно, Sprockets (электростанция за конвейером активов) предоставляет функции SASS, которые вы можете использовать в самом скрипте CSS или SCSS, например функцию asset-path, как показано в документации:
background: url(asset-path("image.jpg")); // background: url("/assets/image.jpg");
background: url(asset-path("image.jpg", $digest: true)); // background: url("/assets/image-27a8f1f96afd8d4c67a59eb9447f45bd.jpg");
Теперь, есливы не используете SASS или не хотите использовать функции SASS, вы можете напрямую ссылаться на путь ресурсов:
background: url("/assets/image.jpg");
background: url("/assets/image-27a8f1f96afd8d4c67a59eb9447f45bd.jpg");
Так что в случае @-font-family at-rule вы бы изменили источникпримерно так:
src: url('/assets/Material-Design-Iconic-Font.woff2?v=2.2.0') format('woff2'), url('/assets/Material-Design-Iconic-Font.woff?v=2.2.0') format('woff'), url('/assets/Material-Design-Iconic-Font.ttf?v=2.2.0') format('truetype');
ИЛИ:
src: url('asset-path(Material-Design-Iconic-Font.woff2?v=2.2.0') format('woff2'), url('asset-path(Material-Design-Iconic-Font.woff?v=2.2.0') format('woff'), url('asset-path(Material-Design-Iconic-Font.ttf?v=2.2.0') format('truetype');