控制器名称空间

时间:2016-03-09 19:28:40

标签: ruby-on-rails ruby

我正在尝试解决以下问题,但我还是无法理解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的解决方案,但我找不到合适的解决方案。如果解决方案已在其他地方写下,请关闭此主题。

希望有人可以帮助我。谢谢!

1 个答案:

答案 0 :(得分:2)

Rails自动加载器搜索多个路径以尝试定位常量 - app/不是其中之一。您可以通过在application.rb中附加它来添加它,例如:

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

或者只是将foo/bar.rb移动到已加载路径中的lib/