2012-10-01 38 views
18

我在“lib”rails目录中构建了一个库。库的结构是这样的: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 

这里有什么问题?

+0

'fake_broker.rb'很可能不包括在你的Rails加载路径 –

+0

但我包括与要求'保险/经纪人/ fake_broker' – rizidoro

+0

尝试'需要Rails.root.join('保险','经纪人','fake_broker')'看看它是否改变任何东西。另外,当调用new时,根据初始化方法,您需要两个参数(这是另一个预测问题;)) –

回答

34

Ruby告诉你它发现了一个Insurance,但它不是一个模块。 也许你已经定义了Insurance

根据周围的代码可能有帮助,如果你在前面加上双冒号“复位”的命名空间:

broker = ::Insurance::Broker::FakeBroker.new(1234,1234) 
+0

声音逻辑...也许您有一个名为Insurance的Rails模型? –

+3

在这种情况下,双冒号也无济于事,因为该模型也将处于最高级别。 Yeeappp。 –

+3

Yeaappp。这是问题!我有一个模型保险。谢啦! – rizidoro