2

Rails で Sass/Css を使用すると奇妙なエラーが発生します。

「1p*x は有効な CSS 値ではありません。」

アプリケーション トレースによると、次のように表示されます。

アプリ/アセット/スタイルシート/共有/form.css.scss:19

しかし、私のファイルでは、この行は次のとおりです。

"input{@include all_borders(1px, solid, red);}"

p と x の間に「 * 」を追加しているようなものです。そして、それは他の多くの行でも同じ問題を引き起こします。そして...エラーが発生しました。以前はエラーが発生したことはありませんでした。構成ファイルで何も変更しませんでした。バンドル更新を使用してgemを更新するだけでした。

[編集] Mixin コード:

@mixin all_borders($strength: 1px, $type: solid, $color: black){
  border: $strength $type $color;
}

[編集終了]

また、「引数の数が間違っている (1 に対して 4)」という問題もあります... しかし、昨日はすべて正常に機能しました... 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

アプリケーション.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

私を助けてくれてありがとう。:)

4

1 に答える 1

1

さて、私は問題が何であるかを見つけました... Pfiew、それは見つけるのが難しいものでした...

Railsサーバーのおかげで、壊れたプロジェクトのコードをファイルごとに追加し、問題の発生を追跡して、まったく新しいプロジェクトを作成する必要がありました。

だから私はこのファイルを削除することを発見しました: /config/initializers/custom_libraries.rb

問題を解決していました。このファイルには1行しかありませんでした:require'ext / string'

したがって、問題は私のカスタム文字列メソッドに起因する必要がありました。

そしてそうです。ネイティブのRuby文字列クラスにはこのメソッドがないため、文字列クラスに「to_a」(to_array)メソッドを追加していました。方法は次のとおりです。

def to_a
  return self.chars.to_a
end

したがって、このメソッドにコメントを付けると、CSSの問題が解決しました。sass-rails gemまたはCSS関連のものがすでにこのメソッドを作成していて、コンパイルやその他のCSSに使用していると思いますが、私の「to_a」文字列メソッドは確かに物事を台無しにしました。しかし、私は推測しているだけです...

確かに、Railsエラーはこれを見つけるのにまったく役に立ちませんでした。誰かが私が問題をより早く見つけたかもしれない方法を知っていますか?たぶん、推奨する特定のデバッグツールですか?

私はこの不幸から学びます。他のRubyクラスメソッドとあまりにも似ている名前で特定のRubyクラス用に独自のメソッドを作成することは決してありません。

于 2012-04-18T07:55:22.010 に答える