Nic*_*nev 4 ruby-on-rails sass compass-sass
我正在尝试扩展Sass:Script :: Functions模块,按照以下建议:https://gist.github.com/481261/dd07a52829886ab1ad0875a8895f0100c4b925ab.问题是,我在哪里放置sass-hex.rb文件,我是否必须做任何事情来"加载"模块扩展?我尝试将文件放在config /中,但似乎没有加载.当我进入rails控制台并键入Sass :: Script :: Functions :: hex时,我得到:"NoMethodError:未定义的方法`hex'用于Sass :: Script :: Functions:Module".
我是Rails的新手,所以答案可能是非常明显和微不足道的.也许这就是为什么所有谈论扩展Sass :: Script :: Functions的网站都没有提到如何将扩展实际连接到代码中.这是官方文档,但在这方面它没有帮助:http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#adding_custom_functions.
更新:
所以,我将方法的定义从"def hex ..."更改为"def self.hex ...",现在Sass :: Script :: Functions.hex正常工作.我仍然觉得我错过了一些东西,正如NOBODY所建议的那样,"自我".需要......或者我在上面的例子中错误地调用了这个方法?
另外,问题是我不会从我使用它的CSS文件中调用"hex"方法.
最后更新:
解决方案是实际做我最初做的事情:将代码放在config /目录中(在我的情况下,在compass.rb文件中).
我被卡住的原因有两个,并认为它对我不起作用:
真正浪费时间 - 我希望这有助于其他人避免它...
我刚刚解决了这个问题,可以使用compactCompass 的功能.这是整个独家新闻:
lib/sass.rb(创建一个新文件)
# Compact function pulled from compass
module Sass::Script::Functions
module CustomSassExtensions
def compact(*args)
sep = :comma
if args.size == 1 && args.first.is_a?(Sass::Script::List)
args = args.first.value
sep = args.first.separator
end
Sass::Script::List.new(args.reject{|a| !a.to_bool}, sep)
end
end
include CustomSassExtensions
end
Run Code Online (Sandbox Code Playgroud)
config/application.rb(将其放在行内class Application右后方config.autoload_paths)
if config.respond_to?(:sass)
require "#{config.root}/lib/sass.rb"
end
Run Code Online (Sandbox Code Playgroud)
让我知道它是否适合你.
| 归档时间: |
|
| 查看次数: |
3877 次 |
| 最近记录: |