image_url vs image-url Rails 4.2 SCS

时间:2015-01-23 17:19:07

标签: ruby-on-rails sass asset-pipeline

我正在将旧的Rails 3.2项目转换为Rails 4.2,并注意到我的图像和字体资源未正确加载。 rails服务器日志中没有错误或Chrome的开发控制台上显示错误,但图片和字体没有显示在页面上。

使用RubyMine并查看scss文件,我注意到IDE抱怨使用image-pathfont-path。当我将连字符更改为下划线(image_path font_path)时,图像和字体显示在网页上。

最近是否有更改使连字功能不再起作用?连字符和下划线函数是否相互别名?

下划线函数名称出现在此处(在链轮内部的sass_functions内部):

require 'sass'

module Sprockets
  module SassFunctions
    def asset_path(path)
      ::Sass::Script::String.new(sprockets_context.asset_path(path.value), :string)
    end

    def asset_url(path)
      ::Sass::Script::String.new("url(" + sprockets_context.asset_path(path.value) + ")")
    end

    def image_path(path)
      ::Sass::Script::String.new(sprockets_context.image_path(path.value), :string)
    end

    def image_url(path)
      ::Sass::Script::String.new("url(" + sprockets_context.image_path(path.value) + ")")
    end

    def video_path(path)
      ::Sass::Script::String.new(sprockets_context.video_path(path.value), :string)
    end

    def video_url(path)
      ::Sass::Script::String.new("url(" + sprockets_context.video_path(path.value) + ")")
    end

    def audio_path(path)
      ::Sass::Script::String.new(sprockets_context.audio_path(path.value), :string)
    end

    def audio_url(path)
      ::Sass::Script::String.new("url(" + sprockets_context.audio_path(path.value) + ")")
    end

    def font_path(path)
      ::Sass::Script::String.new(sprockets_context.font_path(path.value), :string)
    end

    def font_url(path)
      ::Sass::Script::String.new("url(" + sprockets_context.font_path(path.value) + ")")
    end

    def javascript_path(path)
      ::Sass::Script::String.new(sprockets_context.javascript_path(path.value), :string)
    end

    def javascript_url(path)
      ::Sass::Script::String.new("url(" + sprockets_context.javascript_path(path.value) + ")")
    end

    def stylesheet_path(path)
      ::Sass::Script::String.new(sprockets_context.stylesheet_path(path.value), :string)
    end

    def stylesheet_url(path)
      ::Sass::Script::String.new("url(" + sprockets_context.stylesheet_path(path.value) + ")")
    end

    protected
      def sprockets_context
        options[:sprockets][:context]
      end

      def sprockets_environment
        options[:sprockets][:environment]
      end
  end
end
  • SASS-3.4.10
  • rails-4.2.0
  • SASS护栏-5.0.1
  • sprockets-2.12.3

1 个答案:

答案 0 :(得分:0)

看起来this issue on GitHub是相关的。它描述了同样的问题,现在反映出一个解决方案in the sass-rails README

  

Sprockets提供了一些指令,这些指令放在名为requirerequire_treerequire_self的注释中。 不要在你的SASS / SCSS文件中使用它们。它们非常原始,并且不适用于Sass文件。相反,使用Sass的本地@import指令sass-rails已经定制,以与Rails项目的约定集成。