首先:我在这里搜索并使用了搜索,找到了相同错误但设置不同的答案。也许我打破了其他;)

错误:

RuntimeError at /admin/users
Circular dependency detected while autoloading constant Admin::UsersController

结构为:
App => controllers => admin => users_controller.rb

路线:
namespace :admin do
  resources :stuff
  resources :users
end

用户 Controller :
class UsersController < Admin::BaseController
  def new
    #code
  end

  def create
    #code
  end

  def index
    #code
  end

  private

  def user_params
   #code
  end
end

管理员基础 Controller
class Admin::BaseController < ApplicationController
  layout 'admin'
  before_filter :require_login
end

使用:Rails 4.1.4,Ruby 2.1.2
我在这里做错了什么?

谢谢你的帮助!

编辑:

development.rb
Rails.application.configure do
 config.cache_classes = false
 config.eager_load = false
 config.consider_all_requests_local       = true
 config.action_controller.perform_caching = false
 config.action_mailer.raise_delivery_errors = false
 config.active_support.deprecation = :log
 config.active_record.migration_error = :page_load
 config.assets.debug = true
 config.assets.raise_runtime_errors = true
end

最佳答案

看起来主要问题可能只是您没有在Admin命名空间下命名UsersController的命名空间,这里:

class UsersController < Admin::BaseController
简单修复:
class Admin::UsersController < Admin::BaseController
但是,我建议您也将命名空间分成不同的部分,以免将来麻烦。因此,请执行以下操作,而不是执行以下操作:
# app/controllers/admin/users_controller.rb
module Admin
  class UsersController < Admin::BaseController
    # ...
  end
end
并对所有其他命名空间 Controller 执行相同操作,例如:
# app/controllers/admin/base_controller.rb
module Admin
  class BaseController < ApplicationController
    # ...
  end
end
这样,在Rails正在加载和自动加载等过程中,始终可以确保在尝试加载Admin模块之前定义了Admin模块。有时,您会收到未知的常量错误。推理有点复杂,但是如果您想看一看,请查看this post
更新
在Rails Edge上,现在有an official Guide on the topic of Auto Loading of Constants

10-01 18:07
查看更多