为什么在Rails中安装路由会因“未初始化的常量API”而失败?

我正在开发一个包含使用grapegem的API的应用程序。

这是我的Root类:

 module API class Root  "text/error" } ).finish end prefix "api" version 'v1', using: :path format :json error_format :json mount ::API::ServiceRequests end end 

这是我如何在路线中安装它:

mount API::Root => '/'

我收到的错误是: routes.rb:45:in块中的’:uninitialized constant API(NameError)`

这些文件的结构类似于app/api/root.rb ,我在application.rb有一些代码可以加载到文件中:

 config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')] 

尝试将API代码的文件从app/apiapp/api/api

来自Grape的文档 :

将API文件放入app/api 。 Rails需要一个与Ruby模块名称匹配的子目录和一个与该类名称匹配的文件名。 在我们的示例中, Twitter::API的文件名位置和目录应为app/api/twitter/api.rb

因此, API::Root类的正确位置实际上是app/api/api/root.rb