Rails 4.2 / Bootstrap 3:尝试使用超棒的字体...取得成功

0 ruby-on-rails-4 twitter-bootstrap-3 font-awesome-4

我正在尝试使用超棒的字体,但是在运行时,出现以下错误

ActionController::RoutingError (No route matches [GET] "/assets/fonts/font-awesome/fontawesome-webfont.woff"):
....
ActionController::RoutingError (No route matches [GET] "/assets/fonts/font-awesome/fontawesome-webfont.ttf"):
....
ActionController::RoutingError (No route matches [GET] "/assets/fonts/font-awesome/fontawesome-webfont.svg"):
Run Code Online (Sandbox Code Playgroud)

在我的Gemfile中,我有:

 gem "font-awesome-rails"  # https://github.com/bokmann/font-awesome-rails
Run Code Online (Sandbox Code Playgroud)

在我的framework_and_overrides.css.scss中,我有:

// import the CSS framework
@import "bootstrap-sprockets";
@import "bootstrap";
@import "font-awesome";
Run Code Online (Sandbox Code Playgroud)

在我的application.css中,我有:

/*
...
*= require font-awesome
*= require dashboard/framework_and_overrides
....
*/
Run Code Online (Sandbox Code Playgroud)

我在我的application.rb中添加了:

config.assets.paths << Rails.root.join("app", "assets", "fonts")
Run Code Online (Sandbox Code Playgroud)

我运行rake asset:clobber,以干净的方式启动..现在,同样的错误

谢谢您的启发...

Hri*_*iev 5

从application.css中删除:

*= require font-awesome
Run Code Online (Sandbox Code Playgroud)

在您的framework_and_overrides.css.scss底部添加以下几行:

@import "font-awesome-sprockets";
@import "font-awesome";
Run Code Online (Sandbox Code Playgroud)

更新

事实证明,您在资产路由方面存在问题。Rails会根据资产是否预编译来创建资产的路径。使事情在所有情况下(无论是生产还是开发)都能正常工作的最安全方法是将路线放在font_url中,如下所示:

@font-face {
  font-family: "FontAwesome";
  src: font_url('fontawesome-webfont.eot');
  src: font_url('fontawesome-webfont.eot?#iefix') format('eot'), font_url('fontawesome-webfont.woff') format('woff'), font_url('fontawesome-webfont.ttf') format('truetype'), font_url('fontawesome-webfont.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)

另外,您可以链接外部样式表(性能可能会变差):

<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)