0

我在哪里初始化常量?我以为它只是在控制器中。

错误

uninitialized constant UsersController::User

用户控制器

 class UsersController < ApplicationController
      def show
        @user = User.find(params[:id])
      end
      def new
      end
    end

路线

SampleApp::Application.routes.draw do

  get "users/new"
 resources :users
  root to: 'static_pages#home'

  match '/signup', to: 'users#new'

  match '/help', to: 'static_pages#help'
  match '/about', to: 'static_pages#about'
  match '/contact', to: 'static_pages#contact'

用户.rb

 class AdminUser < ActiveRecord::Base
      attr_accessible :name, :email, :password, :password_confirmation
      has_secure_password
      before_save { |user| user.email = email.downcase }
      validates :name, presence: true, length: { maximum: 50 }
      VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
      validates :email, presence: true,
      format: { with: VALID_EMAIL_REGEX },
      uniqueness: { case_sensitive: false }
      validates :password, presence: true, length: { minimum: 6 }
      validates :password_confirmation, presence: true
    end

这可能有助于我也得到

The action 'index' could not be found for UsersController

当我转到用户页面时,但是当我转到 users/1 时,出现上述错误。

4

1 回答 1

7

您在这里有几个问题-

  1. 您的AdminUser模型应该被称为User,因为它在 中定义user.rb,并且您UsersController正在尝试找到它们,这就是您收到uninitialized constant UsersController::User错误的原因。控制器不会User为您定义类。

  2. 您尚未在 中定义index操作UsersController,但已为其定义了路线。当您在routes.rb文件中声明资源时,Rails 默认会创建 7 条路由,它们指向控制器中的特定操作 - indexshowneweditcreateupdatedelete. 您可以通过参数阻止 Rails 定义一个或多个路由:only- 例如,resources :users, :only => [:new, :show]您可以看到已定义的路由,以及它们将调用的控制器操作rake routeshttp://localhost:3000/users默认情况下会点击UsersController#index动作,而默认情况下http://localhost:3000/users/1会点击动作,作为参数UsersController#show传递。1id

于 2012-06-02T04:35:16.397 回答