scss 辅助方法中生成的资产路径具有重复的资产前缀

Asset path generated in scss helper methods has duplicated asset prefix

我认为这种行为是一个错误,但我也在这里问。我已经在 sprockets-rails github repo.

打开了一个错误报告

资产前缀有问题。如果我配置 Rails.application.config.assets.prefix = 'myprefix'config/initializers/assets.rb,然后 运行:

RAILS_ENV=production rake assets:clobber RAILS_ENV=production rake assets:precompile

我所有的预编译资产都是用正确的路径生成的 (public/myprefix/asset_digest.png)。从 .erb 文件中查找资产工作正常,路径生成正确,所有内容都正确显示。问题是在 image-url() 中生成的路径和 .scss 文件中的类似方法获得了两次前缀。

因此,Rails 尝试在 public/myprefix/myprefix/background_digest.jpg 中查找图像,而不是 public/myprefix/background_digest.jpg,但图像已正确预编译并保存到 public/myprefix 文件夹中。一种解决方法是简单地将所有资产从 myprefix 复制到 myprefix/myprefix,但这是一种处理此问题的讨厌方法。这仅发生在从 .scss 文件中引用的资产。

为了确保这不是我的配置问题,我尝试在新应用程序上重现它:

Ruby: 2.3.0
Rails: 4.2.6.
rails new prefixtext -T cd prefixtest rails generate scaffold post title body:string

已配置:

我也试过 sprockets-rails 2.3.2 版,同样的事情发生了。

我的机器是带 rvm 的 ArchLinux,朋友也在他的机器上试过(最后 Ubuntu 也用 rvm),同样的事情发生在我的服务器(带 rvm 的 CentOs 7)上。 已测试 Ruby 版本:2.3.0、2.1.2、2.1.5。;已测试 Rails 版本:4.2.1、4.2.6

任何人都知道可能是什么情况,或者这确实是一个错误。我怎样才能进一步测试它? 这是错误报告:https://github.com/rails/sprockets-rails/issues/363

您忘记了一件简单的事情...斜杠 :)

而不是

Rails.application.config.assets.prefix = 'myprefix' 

在config/initializers/assets.rb

你需要把

Rails.application.config.assets.prefix = '/myprefix'

就是这样......我完全按照你的步骤做了,它在本地对我有用。

P.S。我刚刚在我的生产服务器上启动了一个新应用程序,一切都运行良好。