我在哪里初始化常量?我以为它只是在控制器中。
错误
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'
user.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
当我转到用户页面时,但当我转到用户/ 1时,我收到上述错误。
答案 0 :(得分:6)
你有几个问题 -
您的AdminUser
模型应该被调用User
,因为它在user.rb
中定义,而您的UsersController
正在尝试找到它们,这就是您获得的原因uninitialized constant UsersController::User
错误。控制器不会为您定义User
类。
您尚未在index
中定义UsersController
操作,但您已为其定义了路线。在routes.rb
文件中声明资源时,Rails默认会创建7条路由,指向控制器中的特定操作 - index
,show
,new
,{ {1}},edit
,create
和update
。您可以通过delete
参数阻止Rails定义一个或多个路由 - 例如:only
您可以看到已定义的路由,以及它们将使用resources :users, :only => [:new, :show]
调用的控制器操作。默认情况下,rake routes
会点击http://localhost:3000/users
操作,默认情况下UsersController#index
会点击http://localhost:3000/users/1
操作,并将UsersController#show
作为1
参数传递。