【发布时间】:2015-03-22 19:24:19
【问题描述】:
我正在将一个旧的 Rails 3.2 项目转换为 Rails 4.2,并注意到我的图像和字体资源没有正确加载。 Rails 服务器日志中没有错误,也没有显示在 Chrome 的开发控制台上,但是页面上没有显示图像和字体。
使用 RubyMine 并查看 scss 文件,我注意到 IDE 抱怨 image-path 和 font-path 的使用。当我将连字符更改为下划线 (image_path font_path) 时,图像和字体显示在网页上。
最近是否有使连字符函数不再起作用的更改?连字符和下划线函数是否互为别名?
下划线函数名称出现在此处(sass_functions 内 sprockets 内):
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-rails-5.0.1
- sprockets-2.12.3
【问题讨论】:
-
Sass 不提供 image-path 或 font-path 助手。可以在 Ruby 中编写不允许连字符和下划线互换的自定义 Sass 函数。
-
我猜 OP 正在使用 sass-rails gem,它确实提供了带有连字符名称的 sass 函数。 OP,你说 IDE 抱怨,但你没有说代码是否真的有效。是吗?
-
@Jordan - 很好,它是 sass-rails gem。我将尝试在我的问题中澄清,但带连字符的函数名称不起作用。没有抛出错误,但没有显示图像和字体。一旦我更改为下划线方法,资产确实出现了
标签: ruby-on-rails sass asset-pipeline