30

"lib" rails ディレクトリにライブラリを構築しました。ライブラリの構造は次のようなものです。

 lib/insurance/broker/fake_broker.rb

クラスは次の例のようになります。

module Insurance
  module Broker
    class FakeBroker
      def initialize(user_id, user_secret)
        @user_id = user_id
        @user_secret = user_secret
      end
    end
  end
end

だから、私のresult_controllerで私はこれをやっています:

require 'insurance/broker/fake_broker'

 def show
   broker = Insurance::Broker::FakeBroker.new(1234,1234)
 end

しかしRailsはこのエラーを返しています:

Insurance is not a module

ここで何が問題なのですか?

4

2 に答える 2

60

Ruby は を見つけたと言っていますがInsurance、それはモジュールではありません。Insurance おそらく、すでにクラスを定義していますか?

周囲のコードによっては、先頭に二重コロンを追加して名前空間を「リセット」すると役立つ場合があります。

broker = ::Insurance::Broker::FakeBroker.new(1234,1234)
于 2012-10-01T20:56:54.040 に答える
0

可能性の 1 つは、ディレクトリ レベルで同じ名前のクラスも存在し、そのクラスを参照するというエラーの可能性があります。ディレクトリを確認してください。

于 2021-09-20T17:12:14.313 に答える