My Rails 5.0.1应用程序使用了很多命名空间,而且我最近在尝试访问控制器时遇到LoadError (expected to define)
。但问题是,它只是偶尔发生,使用不同的控制器,并重新加载页面修复它。
导致此错误的控制器示例:
LoadError (Unable to autoload constant
API::V1::ProgramRequirements::Requirements::StudentRequirementsController, expected
/app/controllers/api/v1/program_requirements/requirements/student_requirements_controller.rb to define it)
ls
目录的/app/controllers/api/v1/program_requirements/requirements
:
{other_controllers} student_requirements_controller.rb
控制器:
module API::V1::ProgramRequirements::Requirements
class StudentRequirementsController < ::API::V1::ApplicationController
# omitted....
end
end
路线:
namespace :api do
namespace :v1 do
namespace :program_requirements do
resources :requirements, except: [:new, :edit] do
scope module: :requirements do
resources :student_requirements, except: [:new, :edit]
end
end
end
end
end
这个问题最近才开始发生,并且它并不总是发生在同一个控制器上。在定义的相同命名空间下,我没有任何其他具有相同名称的控制器。