2

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

3 回答 3

3

这是我在 config/application.rb 中需要的配置选项:

config.action_controller.relative_url_root = '/sub'

我猜这是因为 Apache/Passenger 指令在预编译资产(例如 Bootstrap SASS)时没有生效,所以你需要让预编译器知道字体的位置。感谢 wkaha 和 archie 的帮助,这是引导我进入的 bootstrap-sass github 上的 ilnk:https ://github.com/thomas-mcdonald/bootstrap-sass/issues/443

于 2013-12-20T01:15:21.890 回答
1

这有帮助吗?

http://guides.rubyonrails.org/asset_pipeline.html

2.3.1 CSS 和 ERB

资产管道自动评估 ERB。这意味着,如果您将 erb 扩展添加到 CSS 资产(例如 application.css.erb),则您的 CSS 规则中可以使用asset_path 之类的帮助程序:

.class { background-image: url(<%= asset_path 'image.png' %>) }
于 2013-12-19T16:14:32.750 回答
0

这可能是原因。

Bootstrap-sass gem 预编译 glyphicons

config.assets.precompile << %r(bootstrap/glyphicons-halflings-regular.(?:eot|svg|ttf|woff)$)

建议的解决方法:

将 4 个 glyphicon 文件复制到您的资产管道中,并在您自己的生产或开发配置中进行预编译。

于 2013-12-19T19:14:23.750 回答