2015-11-01 6 views
0

Hy ребята ... я учусь Руби на железной дороге, но я не знаю, что происходит на этой странице, это моя ошибка:Ruby On Rails - NoMethodError

NoMethodError in Contacts#new Showing /home/ubuntu/workspace/simplecodecasts_saas/app/views/contacts/new.html.erb where line #7 raised: undefined method `name' for #

это мой новый. html.erb

<div class="row"> 
    <div class="col-md-4 col-md-offset-4"> 
    <div class="well"> 
     <%= form_for @contact do |f| %> 
     <div class="form-group"> 
      <%= f.label :name %> 
      <%= f.text_field :name, class: 'form-control' %> 
     </div> 
     <div class="form-group"> 
      <%= f.label :email %> 
      <%= f.email_field :email, class: 'form-control' %> 
     </div> 
     <div class="form-group"> 
      <%= f.label :comments %> 
      <%= f.text_area :comments, class: 'form-control' %> 
     </div> 
     <%= f.submit 'Submit', class: 'btn btn-default' %> 
     <% end %> 
    </div> 
    </div> 
</div> 

это мои маршруты

Rails.application.routes.draw do 
    resources :contacts 
    get '/about' => 'pages#about' 
    root 'pages#home' 

и мой contacts_controller.rb

class ContactsController < ApplicationController 

    def new 
    @contact = Contact.new 
    end 

    def create 
    end 

end 

Что пойдет не так?

Полноэкранный Ошибка screen

+1

Это означает, что ваша таблица «Контакт» не имеет имени столбца «имя» в базе данных. – Prashant4224

+0

это моя таблица контактов – mrkmn

+0

это мой класс таблицы контактов CreateContacts mrkmn

ответ

0

Это означает, что ваша запись contact не имеет атрибута name, потому что вы не имеете его в своем дБ.

Чтобы исправить это, просто запустите rake db:migrate ... или, если вы еще не создали миграции еще, вы должны выполнить следующие действия:

$ rails g migration AddAttrsToContacts 

#db/migrate/add_attrs_to_contacts____.rb 
class AddAttrsToContacts < ActiveRecord::Migration 
    def change 
     add_column :contacts, :name, :string 
     add_column :contacts, :email, :string 
     add_column :contacts, :comments, :text 
    end 
end 

$ rake db:migrate 

Это будет заполнить таблицу с соответствующими столбцами, и должны разрешить ошибку.

+0

Да, вы правы! большое спасибо! – mrkmn

1

По вашим изображениям с ошибкой нет name поля контактов, пожалуйста, повторно запустить миграцию или добавить эти поля.

#< contacts id: nil> 

означает контакты имеют только идентификатор, так что я предполагаю, что вы сделали это добавление этих полей после запуска этой миграции, который не будет ссылаться на базе данных!

восстановите миграцию для этих полей и удалите их из исходного файла, и все должно быть в порядке.

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

+0

Я пробую, спасибо – mrkmn

Смежные вопросы