gpt4 book ai didi

ruby-on-rails - 使用管理命名空间时未初始化常量 BaseController 错误

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

我有一个这样的管理命名空间:

  namespace :admin do
resources :users
resources :base
end

目录结构如下:

/app/controllers/
+ admin
- base_controller.rb
- users_controller.rb
- users_controller.rb
- application_controller.rb

我必须将 admin/users_conroller.rb 包装在 module Admin end 中,否则我会得到一个 Uninitialized constant BaseController 错误:

class Admin::BaseController < ApplicationController
end

# Works fine
module Admin
class UsersController < BaseController
end
end

# Breaks with error
class Admin::UsersController < BaseController
end

知道为什么会这样吗?使用 Rails 3.2。

最佳答案

命名空间映射到目录,带下划线的文件名以驼峰式命名为类名。

class Some::DeeplyNested::BaseActionsController < ApplicationController

需要在 app/controllers/some/deeply_nested/base_actions_controller.rb 中,rails 才能找到它。

在你的代码中,没有app/controllers/base_controller.rb,所以BaseController

class Admin::UsersController < BaseController

指向 Rails 不知道的任何类。您需要给它管理命名空间(因为您对 BaseController 的类定义也有)

class Admin::UsersController < Admin::BaseController
end

以上内容和您问题中的工作代码是同一个

module Admin
class UsersController < BaseController
end
end

关于ruby-on-rails - 使用管理命名空间时未初始化常量 BaseController 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866667/

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