【问题标题】:NameError in UsersController#index uninitialized constant UsersController::UserUsersController#index 中的 NameError 未初始化常量 UsersController::User
【发布时间】:2021-07-31 16:01:10
【问题描述】:

我是 Rails 新手,并继续收到此错误。我仔细检查了我的语法,一切似乎都很好。我已经包含了我认为相关的文件,但如果您需要更多信息,请告诉我。

控制器/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

【问题讨论】:

  • 尝试将 User 替换为 ::User 。让我们看看是否出错。
  • 此处的代码实际上不会重现问题,因此我们实际上无法告诉您出了什么问题。您需要仔细检查文件名和其他“错误”来源,例如未保存的文件或 VC 相关问题。
  • @dileepnandanam 这是一个愚蠢的差事,因为 Ruby 无论如何都会将嵌套到 Object 的模块向上走来寻找常量。错误消息是 uninitialized constant UsersController::User 的原因是因为这是它开始查找常量的嵌套模块。

标签: ruby-on-rails rails-api


【解决方案1】:

路由文件在这里无关紧要。感觉就像根本找不到 User 模型。试试吧

User.new

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

require './app/models/user'

有什么语法错误之类的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2014-09-11
    相关资源
    最近更新 更多