否则,您的CSS文件应具有扩展名.css.erb,字体声明应为url('<%= asset_path(...) %>').如果使用的是Rails > 3.2.1,则可以使用font_path(...)代替asset_path(...).该帮助程序做的是完全相同的事情,但更清楚了. 最后,像在font-family部分中声明的那样,在CSS中使用字体.如果声明为大写,则可以这样使用它:font-family: 'Icomoon';I have some fonts being configured in my Scss file like so:@font-face { font-family: 'Icomoon'; src: asset-url('icoMoon.eot?#iefix', font) format('embedded-opentype'), asset-url('icoMoon.woff', font) format('woff'), asset-url('icoMoon.ttf', font) format('truetype'), asset-url('icoMoon.svg#Icomoon', font) format('svg');}The actual font file are stored in /app/assets/fonts/I have added config.assets.paths << Rails.root.join("app", "assets", "fonts") to my application.rb fileand the compile CSS source is as follows:@font-face { font-family: 'Icomoon'; src: url(/assets/icoMoon.eot?#iefix) format("embedded-opentype"), url(/assets/icoMoon.woff) format("woff"), url(/assets/icoMoon.ttf) format("truetype"), url(/assets/icoMoon.svg#Icomoon) format("svg");}But when I run the app the font files are not being found. The logs:Why isn't the asset pipeline flattening the font files down into just /assets?Any ideas people?Kind regards,NeilExtra info:When checking the rails console for assets paths and assetprecompile I get the following:1.9.2p320 :001 > y Rails.application.config.assets.precompile---- !ruby/object:Proc {}- !ruby/regexp /(?:\/|\\|\A)application\.(css|js)$/- .svg- .eot- .woff- .ttf=> nil1.9.2p320 :002 > y Rails.application.config.assets.paths---- /Users/neiltonge/code/neiltonge/app/assets/fonts- /Users/neiltonge/code/neiltonge/app/assets/images- /Users/neiltonge/code/neiltonge/app/assets/javascripts- /Users/neiltonge/code/neiltonge/app/assets/stylesheets- /Users/neiltonge/code/neiltonge/vendor/assets/images- /Users/neiltonge/code/neiltonge/vendor/assets/javascripts- /Users/neiltonge/code/neiltonge/vendor/assets/stylesheets- /Users/neiltonge/.rvm/gems/ruby-1.9.2-p320@neiltonge/gems/jquery-rails-2.0.0/vendor/assets/javascripts- /Users/neiltonge/.rvm/gems/ruby-1.9.2-p320@neiltonge/gems/coffee-rails-3.2.1/lib/assets/javascripts- /Users/neiltonge/.rvm/gems/ruby-1.9.2-p320@neiltonge/gems/bourbon-1.3.0/app/assets/stylesheets- !ruby/object:Pathname path: /Users/neiltonge/code/neiltonge/app/assets/fonts => nil 解决方案If your Rails version is between > 3.1.0 and < 4, place your fonts in any of the these folders:app/assets/fontslib/assets/fontsvendor/assets/fontsFor Rails versions > 4, you must place your fonts in the app/assets/fonts folder.Note: To place fonts outside of these designated folders, use the following configuration:config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/For Rails versions > 4.2, it is recommended to add this configuration to config/initializers/assets.rb.However, you can also add it to either config/application.rb , or to config/production.rbDeclare your font in your CSS file:@font-face { font-family: 'Icomoon'; src:url('icomoon.eot'); src:url('icomoon.eot?#iefix') format('embedded-opentype'), url('icomoon.svg#icomoon') format('svg'), url('icomoon.woff') format('woff'), url('icomoon.ttf') format('truetype'); font-weight: normal; font-style: normal;}Make sure your font is named exactly the same as in the URL portion of the declaration. Capital letters and punctuation marks matter. In this case, the font should have the name icomoon.If you are using Sass or Less with Rails > 3.1.0 (your CSS file has .scss or .less extension), then change the url(...) in the font declaration to font-url(...).Otherwise, your CSS file should have the extension .css.erb, and the font declaration should be url('<%= asset_path(...) %>').If you are using Rails > 3.2.1, you can use font_path(...) instead of asset_path(...). This helper does exactly the same thing but it's more clear.Finally, use your font in your CSS like you declared it in the font-family part. If it was declared capitalized, you can use it like this:font-family: 'Icomoon'; 这篇关于在Rails资产管道中使用字体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 08-23 08:18