Ruby on rails Sass/链轮:图像url在哪里?

Ruby on rails Sass/链轮:图像url在哪里?,ruby-on-rails,sass,asset-pipeline,sprockets,Ruby On Rails,Sass,Asset Pipeline,Sprockets,我目前正在实现一个运行时模块,它创建一个sass文件,从中生成一个css文件,删除sass并继续使用它。我在链轮上的轨道上。我一直在处理内部代码,并发现了它的静态编译器类。所以,我一步一步地做的是: 生成Sass文件和精灵 实例化静态编译器 使用编译器生成带有摘要键的css和精灵 现在,我很难使用sass“image-url”方法和png。我在sass文件中使用它,如下所示: image-url("image.png") image-url("image.svg") 指向app/assets下

我目前正在实现一个运行时模块,它创建一个sass文件,从中生成一个css文件,删除sass并继续使用它。我在链轮上的轨道上。我一直在处理内部代码,并发现了它的静态编译器类。所以,我一步一步地做的是:

  • 生成Sass文件和精灵
  • 实例化静态编译器
  • 使用编译器生成带有摘要键的css和精灵
  • 现在,我很难使用sass“image-url”方法和png。我在sass文件中使用它,如下所示:

    image-url("image.png")
    image-url("image.svg")
    
    指向app/assets下的右子目录。正确生成了digested image.svg文件的名称,即css文件上的digest键与文件中的digest键匹配。但png却不是这样,css文件中的摘要键与文件中的摘要键不匹配。我很难调试它,因为不太清楚“image url”助手的声明位置。有人知道为什么这只发生在PNG上和/或在哪里定义了图像url方法吗?(我只知道它不是sass文件,所以它必须是rails依赖项)

    编辑:

    这是我的脚本示例:

    bundled_sass = Sprockets::BundledAsset.new(Rails.application.assets, "random_name.css", sassfile_path)
    bundled_svg = Sprockets::StaticAsset.new(Rails.application.assets, "sprite.svg", svgfile_path)
    bundled_png = Sprockets::StaticAsset.new(Rails.application.assets, "sprite.png", pngfile_path)
    compiler = Sprockets::StaticCompiler.new(Rails.application.assets,
                                   destination_path,
                                   Rails.application.config.assets.precompile,
                                   #:manifest_path => Rails.application.config.assets.manifest,
                                   :digest => Rails.application.config.assets.digest,
                                   :manifest => true)
    compiler.write_asset(bundled_svg)
    compiler.write_asset(bundled_png)
    compiler.write_asset(bundled_sass)
    

    当config.assets.digest选项设置为true时,svg和png将复制到目标路径文件夹(通常为public/assets),它们的名称将获得摘要键。编译sass文件时,为svg url生成的键是正确的。png url使用的摘要键与文件上的摘要键不同

    Compass中包含一个
    image-url()
    函数,您确定不应该从那里获取它吗?是的,因为我没有使用Compass。同意cimmanon的评论。当您在链轮上搜索“_url”、“image”、“-url”时,链轮中似乎没有包含图像url,因此,您为什么认为它与链轮相关?因为如果我使用Sass引擎编译代码,我会在那里出错。它不一定在链轮中定义,但它的资源确实包括特定于rails的帮助程序,这些帮助程序对Sass脚本具有某些功能,否则将无法定义这些功能。