Rails + Bootstrap:字体路径不包括基URI(生产)

时间:2013-12-19 16:09:45

标签: ruby-on-rails twitter-bootstrap-3 passenger glyphicons bootstrap-sass

我正在使用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>

3 个答案:

答案 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文件复制到资产管道中,并在您自己的生产或开发配置中进行预编译。