2012-10-01 17 views
18

Tôi đã xây dựng một thư viện trên thư mục đường ray "lib". Cấu trúc của thư viện là một cái gì đó như thế này:Rails "không phải là một mô-đun" lỗi

lib/insurance/broker/fake_broker.rb 

lớp trông giống như ví dụ sau:

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

Vì vậy, trong result_controller của tôi, tôi đang làm điều này:

require 'insurance/broker/fake_broker' 

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

nhưng Rails đang trả lại lỗi này:

Insurance is not a module 

Có gì sai ở đây?

+0

'fake_broker.rb' có khả năng không có trong mình con đường tải Rails –

+0

Nhưng tôi bao gồm với yêu cầu 'bảo hiểm/môi giới/fake_broker' – rizidoro

+0

Hãy thử 'yêu cầu Rails.root.join ('bảo hiểm', 'môi giới', 'fake_broker')' để xem nếu nó thay đổi bất cứ điều gì. Ngoài ra, khi gọi mới, bạn sẽ cần hai đối số tôi tin theo phương pháp khởi tạo của bạn (đây là một vấn đề được dự báo khác)) –

Trả lời

34

Ruby nói với bạn rằng nó đã tìm thấy Insurance, nhưng nó không phải là một mô-đun. Có lẽ bạn đã xác định một số Insurancelớp?

Tùy thuộc vào mã xung quanh nó có thể giúp đỡ nếu bạn "thiết lập lại" không gian tên bởi prepending dấu hai chấm kép:

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

Âm thanh logic ... có thể bạn cũng có Mẫu Rails được gọi là Bảo hiểm? –

+3

Trong trường hợp đó dấu hai chấm sẽ không giúp đỡ bởi vì mô hình sẽ ở cấp cao nhất, quá. –

+3

Yeaappp. Đó là vấn đề! Tôi có một bảo hiểm mô hình. Cảm ơn người đàn ông! – rizidoro

Các vấn đề liên quan