我正在使用bootstrap-sass gem并且在生产中我的rails应用程序部署在子文件夹下,即根目录为http://www.example.com/sub/
。一切正常,除了字体(特别是Glyphicons):在CSS中,字体的路径是这样的:
url("/assets/bootstrap/glyphicons...
什么时候应该
url("/sub/assets/bootstrap/glyphicons...
CSS和JS资产都有正确的路径,但字体没有。我已经查看了文档(以及网络的其余部分)一段时间,但无法找到如何更改这一点 - 当涉及资产管道时,我是一个菜鸟。
我已将它部署在Linux-Apache-Passenger上。
编辑:我应该在我的Apache站点配置中添加我的这个:
Alias /sub /path/to/rails/app/public
<Location /sub>
PassengerBaseURI /sub
PassengerAppRoot /path/to/rails/app
</Location>
<Directory /path/to/rails/app/public>
Allow from all
Options -MultiViews
</Directory>
答案 0 :(得分:3)
这是config / application.rb中我需要的配置选项:
config.action_controller.relative_url_root = '/sub'
我猜这是因为Apache / Passenger指令在预编译资产(例如Bootstrap SASS)时不会生效,所以你需要让预编译器知道字体的位置。感谢你的帮助,wkaha和archie,以及引导我的引导程序github中的ilnk:https://github.com/thomas-mcdonald/bootstrap-sass/issues/443
答案 1 :(得分:1)
这有帮助吗?
http://guides.rubyonrails.org/asset_pipeline.html
2.3.1 CSS和ERB
资产管道自动评估ERB。这意味着如果您向CSS资产添加erb扩展名(例如,application.css.erb),那么CSS规则中会提供像asset_path这样的帮助程序:
.class { background-image: url(<%= asset_path 'image.png' %>) }
答案 2 :(得分:0)
这可能是原因。
Bootstrap-sass gem precompiles the glyphicons
config.assets.precompile&lt;&lt; %R(引导/ glyphicons-半身正规(?: EOT |。SVG | TTF | WOFF)$)
建议的解决方法:
将4个glyphicon文件复制到资产管道中,并在您自己的生产或开发配置中进行预编译。