我正在使用Rails 4和资产管道。我也在使用Bootstrap 3.在app / assets / stylesheets / material_admin_theme中,我有一个文件bootstrap.css。它包含对源文件的@ font-face声明:
@font-face {
font-family: 'Glyphicons Halflings';
src: url('../../fonts/glyphicons-halflings-regular.eot');
src: url('../../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
该路径将两个目录../../向上移动到fonts目录。因此,两个目录是样式表/资产,然后有一个名为fonts的子目录,其中包含指定的字体:
app/assets/fonts/glyphicons-halflings-regular.ttf
因此源URL正确导致字体。但是,当我加载页面时,我注意到Chrome控制台显示了404:
GET http://localhost:3000/fonts/glyphicons-halflings-regular.ttf 404 (Not Found)
当字体存在时,为什么我会收到404 Not Found消息(因此图标不显示在页面上),源URL是正确的路径?
答案 0 :(得分:0)
好的,混淆在资产管道中。在任何环境,开发,生产等中加载页面时,assets文件夹中的目录树不适用。它正在查看public / assets文件夹。在该目录中,图标只是转储到assets目录中。因此,当我改变道路时:
src: url('/assets/glyphicons-halflings-regular.eot');
有效。同样,当您预编译资产时,它不会公开生成字体目录。它只是将root / assets目录中的字体与已编译的样式表和javascript一起转储。