自定义字体在Rails Asset Pipeline中不起作用

时间:2015-09-01 14:24:17

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

我的Rails应用程序中有这个文件结构:

\APP
+---assets
|   +---fonts
|   |       icons.eot
|   |       icons.svg
|   |       icons.ttf
|   |       icons.woff
|   +---icons
|   +---images
|   +---javascripts
|   +---stylesheets
+---controllers
|
... etc ...

我拥有的自定义字体(图标)在开发中工作,但不在生产(或暂存)中。我知道它与资产管道有关(404错误)。如何显示我的图标/字体?

我的_icons.scss文件(包含在application.css.scss中):

@font-face {
  font-family: "icons";
  src: font-url("icons.eot");
  src: font-url("icons.eot?#iefix") format("embedded-opentype"),
       font-url("icons.woff") format("woff"),
       font-url("icons.ttf") format("truetype"),
       font-url("icons.svg#icons") format("svg");
  font-weight: normal;
  font-style: normal;
}

@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "icons";
    src: font-url("icons.svg#icons") format("svg");
  }
}

[data-icon]:before {
  content: attr(data-icon);
}

[data-icon]:before,
.icon-ico-addcart:before,
.icon-ico-addcart-hover:before,
.icon-ico-allparsers-menu:before,
.icon-ico-blog-menu:before,
.icon-ico-cart:before,
...

我得到的错误:

GET http://127.0.0.1:8888/assets/icons.woff 
GET http://127.0.0.1:8888/assets/icons.ttf 404 (Not Found)      application-e60c1d16b23dd8ae118e0bb3a1d3311c.js:6129 

我之前正在预编译。我的生产环境是我自己的服务器。该字体是使用fontcustom和svgs生成的。我使用this文章来做到这一点。

字体正在预编译...如果我在页面上编辑application.css文件,请更改

url('/assets/icons.woff')

url('/assets/icons-8695a8c5b193c6423e0b3b7a9c71b808.woff')

我的图片出现了。这意味着我的资产正在预编译,但我无法在我的scss文件中正确引用它们。

2 个答案:

答案 0 :(得分:0)

可能是内容类型(application / x-font-woff)没有随资产一起提供,我会从那里开始。

答案 1 :(得分:0)

你在制作什么? Heroku的?

尝试预编译这些类型的文件:

 # In config/initializers/assets.rb
 Rails.application.config.assets.precompile += %w( '.ttf' ) 

包括所有字体结尾。您也可以尝试通过CDN包含字体。

如果这不起作用,请查看以下答案:Rails 4: Why are fonts not loading in production?