sass-rails资产管道:错误生成图像路径;url(/images/blah.png)而不是url(/assets/blah.png)

2.2.2节“ CSS和Sass”中,告诉image-url('delete.png')放入我的Sass所以我有。

但是,它正在生成CSS

background-image: url(/images/delete.png)

而不是在任何地方都告诉我它应该产生的东西,正确而明显的东西,

background-image: url(/assets/delete.png)

什么。该死的。

我花了几天的时间试图弄清楚这是从哪里来的。

是导致此行为的相关设置的要点是我们较早版本的代码库中相同文件的要点(在我们实施资产管道之后,实际上它工作了大约一周,然后才出现这种令人沮丧的行为)。您能发现差异吗?您能想到的其他文件可能是造成这种情况的原因吗?

注意

  • 我们故意使用较旧的版本,sass-rails因为较新的版本Stack level too deep!在预编译时会导致错误。
  • 我们正在使用指南针。

两种变通方法

因为实际上对资产管道进行故障排除有点烂。

1:将图像放在/ images中

I attempted to just move all of the images to public/images and add that as a load path. This worked in dev (images are accessible at either /assets or /images), but precompiling for production puts the fingerprinted images in /assets only (obvs), so when sass-rails puts in url(/imagse/delete-120398471029384102364.png), it can't be found.

2: Make /public/images a symlink to /public/assets

This would probably work in production, but in development the /assets folder doesn't exist, so the url(/images/delete.png) directives result in unfound images.

猪猪2020/03/24 15:28:25

为了我,

改变image_pathimage-path工作.scss后来,我image_path再次切换到它,现在工作正常。

删除缓存并没有帮助我。

猴子2020/03/24 15:28:25

编辑.scss文件(添加空格)并重新加载页面后,我得到了正确的结果。在我删除空间后,它可以正常工作。

蛋蛋2020/03/24 15:28:25

确实看起来像这样:https : //github.com/rails/sass-rails/issues/57 如果是这样,您应该尝试找到Compass和Sass-rails之间版本的良好组合。

也许将所有内容(包括Rails)都升级到最新版本,这仍然是最好的方法(使用bundle outdated捆绑程序1.2中的命令来了解要升级的宝石)

DavaidPro2020/03/24 15:28:25

这似乎是由于您使用的sass-rails版本(3.1.0)所致。我可以重现您的问题(感谢发布Gemfile),当碰到sass-rails 3.1.4时,它就消失了。

尝试升级到3.1.4并清除tmp/cache还要确保您没有访问任何浏览器缓存。

我知道您说3.1.4导致了其他问题...您尝试过更高版本吗?