gpt4 book ai didi

ruby-on-rails - 加载常量时自动加载常量时检测到循环依赖

转载 作者:数据小太阳 更新时间:2023-10-29 06:23:08 27 4
gpt4 key购买 nike

首先:我用谷歌搜索并使用了此处的搜索,找到了相同错误的答案,但设置不同。也许我打破了一些不同的地方;)

错误:

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我在这里做错了什么?

感谢您的帮助!

编辑:

开发.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 模块。否则有时您会收到未知的常量错误。推理有点复杂,但如果您想看一下,请查看 this post .

更新

在 Rails Edge 上,现在有 an official Guide on the topic of Auto Loading of Constants .

关于ruby-on-rails - 加载常量时自动加载常量时检测到循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25460756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com