前几天我也遇到了这个。我有我的 Rails 服务器设置,以便我可以在同一服务器上运行多个 Rails 应用程序在他们自己的 suburi 下。显然,bootstrap_and_overrides.css.less 中的资产路径助手不包括精灵的相对路径,而是将背景图像 url 指向 /assets 而不是 /suburi/assets。
按照我在这里找到的内容: https ://github.com/rails/rails/issues/3365 我能够收集到我需要在预编译资产时执行以下操作:
RAILS_RELATIVE_URL_ROOT="/suburi" rake assets:precompile
这会在您预编译时设置环境中的相对根目录,然后一切都可以正常工作。
真正让我陷入困境的是,在开发过程中一切正常。一旦我将它推送到生产服务器,图标就会停止显示。我一直在想我的服务器或我的代码有问题。一直以来,当我预编译我的资产时,它只是资产路径助手,不包括 suburi。
只需在运行预编译之前在 RAILS_RELATIVE_URL_ROOT 环境变量中设置完整的 suburi 路径,它就会起作用。
更新:您可以通过添加在config/application.rb文件 中设置此变量
config.action_controller.relative_url_root = '/suburi'
这将是最好的选择,因为它在部署时不需要额外的输入。
你可以在这里读到它:
http://guides.rubyonrails.org/configuring.html#configuring-action-controller