我知道这里已经有类似的问题得到了解答,但是很多答案都使用了gem或直接修改Bootstrap文件。虽然这些是有效的配置,但我想在这个领域(Sprockets、Rails Pipeline、前端开发)中增加我的知识,并想了解为什么这不起作用,背后的问题是什么。
Ruby 2.0.0-p353,Rails 4.0.2,Bootstrap 3.0.3,Nginx 1.4.4,Passenger 4.0.33
我从Bootstrap网站下载了最新的zip文件,执行了所有操作(点击此处)将这些文件直接包含在我的应用程序中,在我的开发环境中能够如预期那样完全显示出glyhpicons。然而,当我部署到生产环境时,在Chrome浏览器中glyhpicons会显示为方块。我在生产预编译中添加了glyhpicons文件的各个文件扩展名,并验证它们出现在我的public/assets文件夹中。js/css文件和glyphicon文件之间唯一的差别是glyphicon文件旁边没有gzipped文件。
production.rb:
config.assets.precompile = ['*.js', '*.css', '*.eot', '*.svg', '*.ttf', '*.woff']
我知道Rails在开发和生产环境下以不同的方式加载资源,但为什么生产环境中它没有看到或理解glyphicon资源呢?是否有办法通过当前配置来修复这个问题,还是我需要改变包含这些资源的方式,以便能够修复这个错误?
此外,在开发和生产环境下,每当我渲染一个使用glyphicon的页面时,我都会得到以下错误,但图标仍然显示出来。这是否相关?
- ActionController :: RoutingError(无法匹配[GET]“/fonts/glyphicons-halflings-regular.woff”) - ActionController :: RoutingError(无法匹配[GET]“/fonts/glyphicons-halflings-regular.ttf”) - ActionController :: RoutingError(无法匹配[GET]“/fonts/glyphicons-halflings-regular.svg”)
@import "bootstrap"
之前加上@import "bootstrap-sprockets"
帮助了我,尽管我不知道问题的原因。 - Konstantine Kalbazov