【问题标题】:Ruby on Rails - NameError: uninitialized constant UsersController at /admin/usersRuby on Rails - NameError:/admin/users 处的未初始化常量 UsersController
【发布时间】:2014-06-04 00:13:47
【问题描述】:

我在 admin 下添加了 users 资源,以允许 admin 控制/修改用户帐户。但我收到关于未初始化的常量 UsersController 的错误。用户帐户由设计处理。目前我只想创建索引页面来列出每个用户。以下是相关部分:

/app/controllers/admin/users_controller.rb

class Admin::UsersController < ApplicationController

  def index
    @users = User.all
  end

end

我已确保我的 devise_for :users 在我的路线开始。

/conig/routes.rb

Rails.application.routes.draw do
  devise_for :users

  scope "/admin" do
    resources :users
  end

  root :to => "visitors#index"
end

我知道视图不是问题。我尝试加载的页面显示此错误。

除此之外,其他一切正常。我是否需要对 UsersController 进行不同的处理?例如,我需要从 Devise 控制器继承吗?

【问题讨论】:

  • 我会更容易只制作一个常规的管理控制器文件:/app/controllers/admin_controller.rb 如果您想继续当前的方法,这个问题可能会有所帮助:stackoverflow.com/questions/5051487/…跨度>

标签: ruby-on-rails ruby devise routes ruby-on-rails-4.1


【解决方案1】:

scope 假设您要将控制器放在命名空间中(因此,对于范围,它只是 UsersController 而不是 Admin::UsersController,并且没有 /admin 目录)。如果你想使用Admin 命名空间/目录,你需要像这样定义你的路由:

  namespace :admin do
    resources :users
  end

顺便说一句,您可以使用rake routes 查看您的路线指向的内容。尝试使用 scopenamespace 运行它,你会看到它如何改变事情。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多