Rails资产遇到我的字体问题

时间:2016-06-02 02:16:41

标签: ruby-on-rails asset-pipeline

本地和heroku都有我的字体问题。

Rails 4.2.5.1

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

/app/assets/fonts/fontawesome-webfont.eot
/app/assets/fonts/fontawesome-webfont.svg
/app/assets/fonts/fontawesome-webfont.ttf
/app/assets/fonts/fontawesome-webfont.woff
/app/assets/fonts/fontawesome-webfont.otf

错误消息:

Started GET "/assets/fonts/fontawesome-webfont.ttf?v=4.2.0" for ::1 at 2016-06-01 22:12:24 -0400

ActionController::RoutingError (No route matches [GET] "/assets/fonts/fontawesome-webfont.ttf"):
  actionpack (4.2.5.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
  web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
  web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
  actionpack (4.2.5.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.5.1) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.5.1) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.5.1) lib/active_support/tagged_logging.rb:68:in `block in tagged'

config / initializers / assets.rb具有:

Rails.application.config.assets.version = '2.0'

这里有什么问题,很困惑?

3 个答案:

答案 0 :(得分:3)

虽然Rails让您将资产存储在assets/javascriptsassets/stylesheetsassets/fonts或其他任何内容中,但这些目录不会直接映射到网址。相反,所有内容都只来自/assets。因此,在您浏览器的位置栏中输入http://localhost:3000/assets/fontawesome-webfont.ttf,我打赌您会获得该字体。

所以你应该找到引用该字体的内容,并在那里修复URL(可能在CSS文件中)。 但是请注意,在生产环境中,Rails还会破坏这些资产的名称以使其更易于缓存,因此生产中的正确URL将类似于http://example.com/assets/fontawesome-webfont-asdfasasdfadsfadfsasf23kjksdjkasdfadsf.ttf。您可以使用asset_path helper确保始终获得正确的网址。还有asset_urlimage_path等。甚至还有font_path

答案 1 :(得分:0)

fonts文件夹未与资产中的其他Rails资产管道文件夹一起加载,因此您需要先将其添加到其中。

config/application.rb文件中添加以下行:

config.assets.paths << Rails.root.join("app", "assets", "fonts")

这样在Application类中使用

class Application < Rails::Application
  config.assets.paths << Rails.root.join("app", "assets", "fonts")
end

这将允许在应用程序启动时加载font文件夹以及其余文件夹

然后在您的css文件中,将所有src: url("/assets/fonts/font_name.format");更改为src: url("/assets/font_name.format");

这应该可以解决问题。

答案 2 :(得分:0)

我从我的项目中移除了字体真棒css并添加了darn gem并且它有效:)