我在使用Sass / Css的Rails中遇到了一个奇怪的错误:
“1p * x不是有效的CSS值。”
应用程序跟踪说它来自:
应用程序/资产/样式表/共享/ form.css.scss:19
但是在我的文件中,这一行是:
“输入{@include all_borders(1px,solid,red);}”
就像在p和x之间添加“*”。并且,它与其他行的很多相同。并且...错误刚刚出来,我从来没有过,我没有更改配置文件中的任何内容,我唯一做的就是使用捆绑更新来更新我的宝石。
[编辑] Mixin代码:
@mixin all_borders($strength: 1px, $type: solid, $color: black){
border: $strength $type $color;
}
[结束编辑]
我也有一些“错误的参数数量(4对1)”问题......但是,昨天一切正常......这就像我的scss文件的预编译出了问题...我有尝试预编译时同样的问题。
有没有人有线索?我不知道该怎么做......
如果有帮助:我使用Ruby 1.9.3,Rails 3.2.3,sass 3.1.15和sass-rails 3.2.5,我也发布了我的application.rb& development.rb文件:
development.rb config.cache_classes = false
config.whiny_nils = true
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = true
config.active_support.deprecation = :log
config.action_dispatch.best_standards_support = :builtin
config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5
config.assets.compress = false
config.serve_static_assets = false
config.assets.debug = true
application.rb中
require File.expand_path('../boot', __FILE__)
require 'rails/all'
if defined?(Bundler)
Bundler.require(*Rails.groups(:assets => %w(development test)))
end
module MySite
class Application < Rails::Application
config.autoload_paths += %W(#{config.root}/lib)
config.encoding = "utf-8"
config.assets.enabled = true
config.assets.initialize_on_precompile = false
config.assets.version = '1.0'
end
end
提前感谢您花时间帮助我。 :)
答案 0 :(得分:1)
好的,我发现问题是什么...... Pfiew,这很难找到...
我必须创建一个全新的项目,逐个文件地添加我破碎的代码,并通过Rails服务器跟踪问题的发生。
所以我发现删除这个文件: /config/initializers/custom_libraries.rb
正在解决这个问题。此文件只有一行:需要'\ text / string'
所以问题必须来自我的自定义字符串方法。
是的,确实如此。我在字符串类中添加了“to_a”(to_array)方法,因为本机Ruby字符串类没有此方法。方法是:
def to_a
return self.chars.to_a
end
所以评论这个方法解决了我的CSS问题。我想sass-rails gem或CSS相关的已经创建了这个方法,并将它用于编译或其他CSS的东西,我的“to_a”字符串方法肯定搞砸了。但我只是猜测......
当然,Rails错误根本没有帮助。有谁知道我怎么能更快地找到这个问题?也许推荐一个特定的调试工具?
我将从这个不幸的事件中学习:永远不要为特定的Ruby类创建自己的方法,其名称与其他Ruby类方法过于相似。