2015-05-01 56 views
0

我在lib目錄下創建一個模塊:如何在使用Rails的控制器中使用lib中的模塊?

# lib/a/b/c.rb 
module A 
    module B 
    class C 
     def say 
     p 'Hi!' 
     end 
    end 
    end 
end 

現在我想從這個模塊文件調用C類。

# app/controllers/c_controller.rb 
@data = A::B::C.new.say 

這添加到配置文件:

# config/application.rb 
config.autoload_paths += %W(#{config.root}/lib) 

但它給了我一個錯誤:

NameError in CController#index 
uninitialized constant CController::say 

是我的錯源?

+0

您是否將模塊包含在控制器中? – forthowin

+0

是的。即使我這樣做'包含A :: B'並在控制器中使用'C.new.say'。結果相同。 –

+0

更改application.rb後,您是否重新啓動了服務器? – BroiSatse

回答

0

我知道原因。有必要在控制器的第一行中添加require

require 'a/b/c' 
+0

它不應該被需要 - 這就是爲什麼你要自動加載路徑。 – BroiSatse

+0

但是如果我不使用它。它真的不行。即使我創建了一個新項目來測試它。 –

相關問題