モデルに含めるモジュールの名前空間に問題があります。 /lib/search/car.rb /config/application.rb名前空間付きモジュールとRails 3.1.3 autoload_path
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.autoload_paths += Dir["#{config.root}/lib/search/*"]
で
module Search
module Car
include ActiveSupport::Concern
# methods in here
end
end
で/app/models/car.rb
class Car
include Search::Car
end
で
奇妙なことは、サーバーを起動するときに直接エラーが発生しないということです。 しかし、私は、私はこのエラーを取得し、しばらくして、ブラウザを更新した場合:
/config/environments/development.rb:
Expected #{Rails.root}/lib/search/car.rb to define Car
問題の性質は、それがとは何かを持っていることを示しています私も試してみました
config.cache_classes = false
は私がSearch
を定義/lib
で直接ファイルsearch.rb
を置く:
module Search
# Put shared methods here
end
私は間違っていますか?
UPDATE:
[OK]を、私はSearch::CarSearch
にSearch::Car
の名前を変更する場合、それが動作することが判明しました。 同じ名前のモジュール/クラスを異なるスコープに含めることはできませんか?
をあなたは異なるスコープに同じ名前のモジュール/クラスを持つことができますが、あなたはモジュールの車のメソッドを使用しているとき、あいまいさを取り除くには、スコープを指定する必要があります。 –
ねえ、ご意見ありがとうございます。私もそうだと思ったが、うまくいかないようだ。なぜ私はエラーが発生する任意のアイデア? – Yeggeps