404缺少字体,即使字体存在且字体路径正确

时间:2016-06-28 16:39:49

标签: css ruby-on-rails twitter-bootstrap asset-pipeline

我正在使用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是正确的路径?

1 个答案:

答案 0 :(得分:0)

好的,混淆在资产管道中。在任何环境,开发,生产等中加载页面时,assets文件夹中的目录树不适用。它正在查看public / assets文件夹。在该目录中,图标只是转储到assets目录中。因此,当我改变道路时:

src: url('/assets/glyphicons-halflings-regular.eot');

有效。同样,当您预编译资产时,它不会公开生成字体目录。它只是将root / assets目录中的字体与已编译的样式表和javascript一起转储。