2016-03-09 66 views
3

我試圖解決以下問題,但我無法繞過Rails中的自動加載。我有以下控制器位於app/api/v1/registration_controller。控制器命名空間中的未初始化的常量

class Api::V1::RegistrationController < ApplicationController 
    include ::Foo::Bar 

    def index 
    end 
end 

而且在應用程序/富/ bar.rb以下模塊/類:

module Foo 
    class Bar 
    def some_method 
    end 
    end 
end 

但是,我得到了以下錯誤消息:

uninitialized constant Foo 

我正試圖解決這個問題,並且已經在Stack Overflow中尋找解決方案,但是我找不到合適的解決方案。如果解決方案已在其他地方寫下來,請關閉此主題。

希望有人能幫助我。謝謝!

回答

2

Rails自動加載器搜索多條路徑來嘗試定位常量 - app/不是其中之一。您可以通過在application.rb中追加其添加它,如:

config.autoload_paths << File.join(config.root, "app") 

或者只是移動foo/bar.rblib/,這已經是在裝載機路徑。

+1

This Works,thanks !!將這些類型的文件移動到lib文件夾而不是應用程序文件夾是否是最佳做法? –

+0

是的,我通常把它們放在lib中。如果我在app /下添加一類新的東西(比如'decorators'),我會將app/decorators添加到加載路徑中,但通常情況下,定製的東西會進入lib。 –

相關問題