2

我目前正在编写 Michael Hartl 的 Ruby on Rails 教程。我试图通过在视图目录中创建一个带有嵌入式 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         
.
.
.
.

请让我知道如何解决这个问题,因为我无法通过我的规范测试并出现此错误。如果有人有任何建议或见解,我将不胜感激。谢谢。

4

1 回答 1

3

控制器文件名应该是users_controller.rb

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

尝试 Railsscaffolding并查看它创建的文件(controller, model and views暂时忽略其他文件)并查看这些文件的内容。使用脚手架进行创建User如下:

     rails g scaffold user name:string email:string
     rake db:migrate 
于 2013-03-27T16:08:17.430 回答