我正在尝试解决以下问题,但我还是无法理解Rails中的自动加载。我在 app / api / v1 / registration_controller中有以下控制器。
class Api::V1::RegistrationController < ApplicationController
include ::Foo::Bar
def index
end
end
app / foo / bar.rb中的以下模块/类:
module Foo
class Bar
def some_method
end
end
end
但是,我收到以下错误消息:
uninitialized constant Foo
我正试图解决这个问题,并且已经搜索了Stack Overflow的解决方案,但我找不到合适的解决方案。如果解决方案已在其他地方写下,请关闭此主题。
希望有人可以帮助我。谢谢!
答案 0 :(得分:2)
Rails自动加载器搜索多个路径以尝试定位常量 - app/
不是其中之一。您可以通过在application.rb中附加它来添加它,例如:
config.autoload_paths << File.join(config.root, "app")
或者只是将foo/bar.rb
移动到已加载路径中的lib/
。