Rails 4.1.1生产:asset_path不适用于字体?

时间:2014-09-17 15:14:34

标签: ruby-on-rails

我正在尝试加载glyphicons。在开发中它正在工作,因为我不需要预先编译任何东西。但在生产中它不会加载。浏览器控制台说:

"NetworkError: 404 Not Found - http://production.site.com/assets/glyphicons-halflings-regular.ttf"

这是我的glyphicons.scss文件的行:

@font-face{font-family:'Glyphicons Halflings';src:url(asset_path('/assets/glyphicons-halflings-regular.eot'));src:url(asset_path('/assets/glyphicons-halflings-regular.eot?#iefix')) format('embedded-opentype'),url(asset_path('/assets/glyphicons-halflings-regular.woff')) format('woff'),url(asset_path('/assets/glyphicons-halflings-regular.ttf')) format('truetype'),url(asset_path('/assets/glyphicons-halflings-regular.svg#glyphicons-halflingsregular')) format('svg');}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;}

我的字体文件夹位于app / assets中:

app/
  assets/
  ├── fonts
  │   ├── glyphicons-halflings-regular.eot
  │   ├── glyphicons-halflings-regular.svg
  │   ├── glyphicons-halflings-regular.ttf
  │   └── glyphicons-halflings-regular.woff

在我的application.rb文件中,我有这个:

config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( *.svg *.eot *.woff *.ttf )

这不就是我要做的全部吗?我不知道Rails在哪里寻找字体?我该如何解决这个问题?

== UPDATE == 来自Mandeep的建议:

application.rb文件:

# config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( *.svg *.eot *.woff *.ttf )

glyphicons.scss

@font-face{font-family:'Glyphicons Halflings';src:font-url('/assets/glyphicons-halflings-regular.eot');src:font-url('/assets/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),font-url('/assets/glyphicons-halflings-regular.woff') format('woff'),font-url('/assets/glyphicons-halflings-regular.ttf') format('truetype'),font-url('/assets/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;}

我推送了我的代码并重新部署了,但它仍然无法正常工作

1 个答案:

答案 0 :(得分:1)

由于您使用的是rails&gt; 4因此,您不需要在资产中添加字体文件夹,因为它默认添加到资源中。 您也使用sass,因此您可以使用font-url helper。如果你看docs它说:

  

使用资产管道时,必须重写资产路径,并且sass-rails为以下资产类提供-url和-path帮助程序(在Sass中用连字符连接,在Ruby中加以强调):图像,字体,视频,音频,JavaScript和样式表。

所以你可以像这样使用它:

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