我正在将旧的Rails 3.2项目转换为Rails 4.2,并注意到我的图像和字体资源未正确加载。 rails服务器日志中没有错误或Chrome的开发控制台上显示错误,但图片和字体没有显示在页面上。
使用RubyMine并查看scss
文件,我注意到IDE抱怨使用image-path
和font-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
答案 0 :(得分:0)
看起来this issue on GitHub是相关的。它描述了同样的问题,现在反映出一个解决方案in the sass-rails README:
Sprockets提供了一些指令,这些指令放在名为
require
,require_tree
和require_self
的注释中。 不要在你的SASS / SCSS文件中使用它们。它们非常原始,并且不适用于Sass文件。相反,使用Sass的本地@import
指令sass-rails
已经定制,以与Rails项目的约定集成。