我觉得我尝试了我在这里和某些博客上找到的所有解决方案,但有些事情仍然是错误的,我不知道是什么。
我的错误:
...
Started GET "/fonts/amaze.ttf" for 83.9.18.180 at 2014-11-26 09:10:21 +0000
...
app[web.1]: ActionController::RoutingError (No route matches [GET] "/fonts/amaze.ttf"):
...
当然在本地主机上它也不起作用。
我正在使用rails 4.1.1
我的字体位于:
assets/fonts/amaze.ttf
我甚至重新定位它以检查它是否可行:assets / amaze.ttf -it不是。
我在application.css.scss文件中的当前解决方案:
@font-face {
font-family: 'Amaze';
src: font-url('amaze.ttf');
}
.amaze {
font-family: 'Amaze';
}
我在application.rb中尝试了一些配置,但没有效果:
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
config.serve_static_assets = true
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.assets.version = '1.0'
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/
我是否必须在应用程序或开发/生产文件中配置任何内容?
修改
问题是我的字体坏了......
更多细节: 我有这里的字体http://fontzone.net/download/amaze-normal 并且它被打破了(我的意思是没有完全破坏,它适用于linux,但没有使用font-face,不知道为什么,如果值得任何人努力尝试弄清问题是什么)
我尝试了其他来源的另一种字体: http://www.fontcubes.com/Amaze.font
它有效! yey! -
修改
我有更多字体(otf和ttf)的类似问题所以我会说问题仍然是开放的; p
答案 0 :(得分:15)
fonts
移至public
目录。这里的问题是路径/fonts/amaze.ttf
没有达到Rails Asset Pipeline。需要以/assets
开头才能使用资产管道,例如/assets/fonts/amaze.ttf
或/assets/amaze.ttf
。
这里有两个主要选项:
更新路径请求:
因此请使用/assets/amaze.ttf
代替/fonts/amaze.ttf
。
请注意,要使路径/assets/fonts/amaze.ttf
生效,您需要将amaze.ttf
字体放在/app/assets/fonts/fonts/
或/vendor/assets/fonts/fonts/
中。双fonts
目录确保在编译资产后fonts
中有/public/assets
目录。有关详细信息,请参阅this answer。
将您的fonts
目录移至public
目录:
由于请求的路径无论如何都不使用Asset Pipeline,您只需将fonts
目录移动到/public/
目录,Web服务器就会自动为其服务。因此,您的字体应位于/public/fonts/amaze.ttf
等
应该这样做!
答案 1 :(得分:1)
我也遇到过font-awesome这个问题,但这是我对字体的一般研究。
我在app / assets下创建了一个名为fonts的新目录。然后复制所有字体并将其包含在 application.rb 文件中的资源中,如下所示:
config.assets.paths << Rails.root.join("app", "assets", "fonts")
将你的font-awesome.css重命名为font-awesome.css.scss.erb,然后像这样更改@ font-face声明
@font-face { font-family: "FontAwesome"; src: url('<%= asset_path('fontawesome-webfont.eot')%>');
src: url('<%= asset_path('fontawesome-webfont.eot?#iefix')%>') format('eot'),
url('<%= asset_path('fontawesome-webfont.woff')%>') format('woff'),
url('<%= asset_path('fontawesome-webfont.ttf')%>') format('truetype'),
url('<%= asset_path('fontawesome-webfont.svg#FontAwesome')%>') format('svg');
font-weight: normal; font-style: normal; }
希望这会有帮助:) 还有更多参考Font-face
答案 2 :(得分:0)
对我来说这是一个文件权限错误,我从另一台计算机复制了文件。一旦我修改了权限,就可以了。
答案 3 :(得分:0)
对我来说,就像我在application.scss
中导入使用https//
而不是https://
作为URL一样简单。下次请仔细阅读。
答案 4 :(得分:0)
谢谢大家。
我找到了解决方案,为什么不将fonts/*.ttf
放入开发环境的app/assets/images/fonts/*.ttf
中呢?
同时将config/environments/development.rb
保留为默认的config.serve_static_assets = false
假值。
这对我有用。