ruby-on-rails NameError in UsersController#index uninitialized constant UsersController::User

hxzsmxv2  于 2023-05-30  发布在  Ruby
关注(0)|答案(2)|浏览(113)

我是Rails的新手,一直遇到这个错误。我已经仔细检查了我的语法,一切似乎都很好。我已经包括了我认为是相关的文件,但让我知道,如果你需要更多的信息。
controllers/users_controller.rb:

class UsersController < ApplicationController

def index
    @users = User.all
    render json: @users, status: :ok
end

def show
    render json: @user
end

def create

    @user = User.new(user_params)
    @user.save
    render json: @user, status: :created
end

def update
    if @user.update(user_params)
      render json: @user
    else
      render json: @user.errors, status: :unprocessable_entity
    end
end

def destroy
    @user = User.where(id: params[:id]).first
    if @user.destroy
        head(:ok)
    else
        head(:unprocessable_entity)
    end
end

private 

def set_user
    @user = User.find(params[:id])
end

def user_params
params.require(:user).permit(:name, :email, :password)
end

结束
models/user.rb

class User < ApplicationRecord
has_secure_password
validates :email, presence: true
has_many :reviews, :dependent => :destroy
has_many :albums

结束
config/routes.rb

Rails.application.routes.draw do
  root to: "static#home"
  resources :users
  get "*path", to: "fallback#index", constraints: ->(req) { !req.xhr? && req.format.html? }
end
6qftjkof

6qftjkof1#

路由文件在这里是不相关的。感觉用户模型根本找不到。试着

User.new

在控制台。如果找不到,则可能模型位于错误的位置。例如,它是否在app/models/user.rb中?如果是这样的话

require './app/models/user'

语法错误之类的吗?

o2rvlv0m

o2rvlv0m2#

在rails 7中,当我们试图创建一个新的Controller而不创建它的Model时。我也面临着同样的问题。

NameError in UsersController#index uninitialized constant UsersController::User

只需要在控制器中添加skip_load_and_authorize_resource

skip_load_and_authorize_resource

假设我们有一个控制器

class UserController < ApplicationController
  skip_load_and_authorize_resource

  def index
   @user = User.all
  end

end

相关问题