UsersController#show中的NameError

时间:2013-03-27 15:10:19

标签: ruby-on-rails nameerror uninitialized-constant

我目前正在研究Michael Hartl撰写的Ruby on Rails教程。我试图通过在views目录中创建带有嵌入式ruby页面的HTML来为我的数据库中的每个用户添加一个页面。 show.html.erb的代码如下:

    <%= @user.name %>, <%= @user.email %>

当我将用户添加到user_controller.rb文件时,它看起来像这样:

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

    def new
    end
  end

当我运行rails服务器并单击打开users / 1 URL时,我收到一个NameError抱怨未初始化的常量。错误和跟踪如下:

NameError in UsersController#show
uninitialized constant UsersController::User

Rails.root: /usr/sample_app
Application Trace | Framework Trace | Full Trace

app/controllers/users_controller.rb:3:in `show'
actionpack (3.2.12) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.12) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.12) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.12) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.12) lib/active_support/callbacks.rb:414:in         
.
.
.
.

请让我知道如何解决此问题,因为我无法通过此错误传递我的规范测试。如果有人有任何建议或见解,我将非常感谢他们。谢谢。

1 个答案:

答案 0 :(得分:3)

控制器文件名应为users_controller.rb

正如您在评论you don't have any User model defined中提到的那样。创建模型运行rails g model user name:string email:string。这将创建带有User属性的name and email模型。

尝试Rails scaffolding并查看它创建的文件(在controller, model and views暂时忽略其他文件)并查看这些文件的内容。使用scaffold创建User如下:

     rails g scaffold user name:string email:string
     rake db:migrate