在global.css
加载的application.html.erb
文件中,我有以下几行:
@font-face {
font-family: myfont;
src: url(/lib/fonts/MyFont-AH.ttf) format("truetype"); /* For IE */
src: local("MyFont-AH"), url(/lib/fonts/MyFont-AH.ttf) format("truetype"); /* Non-IE */
}
然后我在其他地方
h1 {
font-family: myfont, helvetica, arial;
}
当我启动服务器时,h1使用的是Helvetica字体,我在日志ActionController::RoutingError (No route matches [GET] "/lib/fonts/MyFont-AH.ttf"):
中收到错误。我想这意味着我需要编辑我的路由文件,所以我去添加了行get "/lib/fonts/MyFont-AH.ttf"
,但是当我重新加载页面时,我收到错误missing :controller
,因为没有控制器绑定到这个动作。当我创建一个控制器并将get请求与它匹配时,它就需要一个模板。看起来它希望我像其他大多数请求一样设置控制器/动作,所以我不太清楚这里要做什么。有什么建议吗?
答案 0 :(得分:8)
我升级到Rails 3.2并使用资产管道(来自Rails 3.1+),然后我将要显示的字体放在vendor/assets/fonts
中。然后我将以下行添加到我的application.rb
文件中:config.assets.paths << "#{Rails.root}/vendor/assets/fonts"
。最后在我的CSS文件中,我使用了格式:
@font-face {
font-family: myfont;
src: url("/assets/myfont.ttf") format("truetype"); /* For IE */
src: local("myfont"), url("/assets/myfont.ttf") format("truetype"); /* For non-IE */
}
我认为原始问题的一部分可能是我的文件存储了扩展名.TTF
而不是.ttf
,但我不确定。我所知道的是它现在正在运作。
答案 1 :(得分:1)
我自己没有这样做,但我认为你的字体应该存储在public或assets目录中(取决于你使用的rails版本)。 Lib不是一个可供用户下载的目录(除非你使用某种聪明的宝石来处理这个问题吗?)。
在pre Rails 3.1上我将我的字体放在
中public/fonts
然后用
引用它们url(../fonts/MyFont-AH.ttf)