NameError в UsersController#show
В настоящее время я работаю над учебником по Ruby on Rails Майклом Хартлом. Я пытаюсь добавить страницу для каждого пользователя в моей базе данных, создав HTML-страницу со встроенной страницей ruby в каталоге представлений. Код для 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 и нажимаю открыть URL-адрес users / 1, я получаю 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 ответ
Имя файла контроллера должно быть 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
пока игнорируйте другие файлы) и просмотрите содержимое этих файлов. Использовать эшафот для создания User
как показано ниже:
rails g scaffold user name:string email:string
rake db:migrate