2013-03-27 2 views
2

В настоящее время я работаю над учебником Ruby on Rails от Michael Hartl. Я пытаюсь добавить страницу для каждого пользователя в моей базе данных, создав HTML-код со встроенной рубиновой страницей в каталоге представлений. Код для show.html.erb ниже:NameError in UsersController # show

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

При добавлении пользователя в файл user_controller.rb, это выглядит следующим образом:

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

    def new 
    end 
    end 

При запуске сервера Рельсы и нажмите при открытии 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   
. 
. 
. 
. 

Пожалуйста, дайте мне знать, как идти об этом, потому что я не могу передать мои спецификации тестов с этой ошибкой. Если у кого-то есть какие-то предложения или проницательность, я бы очень признателен им. Спасибо.

+0

Ну, у вас есть класс 'User', определенный в' приложение/модели/user.rb'? – khustochka

+0

НЕТ. На самом деле, я не могу найти файл user.rb в каталоге моделей. Это странно, потому что я знаю, что у меня был один – Nyce37

ответ

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 игнорировать другие файлы) и посмотреть содержимое этих файлов. Для того, чтобы использовать леску для создания User, как показано ниже:

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