我目前正在研究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
.
.
.
.
请让我知道如何解决此问题,因为我无法通过此错误传递我的规范测试。如果有人有任何建议或见解,我将非常感谢他们。谢谢。
答案 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