本地和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'
这里有什么问题,很困惑?
答案 0 :(得分:3)
虽然Rails让您将资产存储在assets/javascripts
,assets/stylesheets
,assets/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_url
,image_path
等。甚至还有font_path
!
答案 1 :(得分:0)
fonts
文件夹未与资产中的其他Rails资产管道文件夹一起加载,因此您需要先将其添加到其中。
在config/application.rb
文件中添加以下行:
config.assets.paths << Rails.root.join("app", "assets", "fonts")
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并且它有效:)