2014-02-17 4 views
0

Я пытаюсь создать форму с действием, которые ссылаются на другой контроллер, но он не работаетform_for ссылки на другой контроллер Rails 4

Моя форма:

<%= form_for([@product,@product.subjects.build]) do |s| %> 

форма оказывается в/продукты/show_sujet.html.erb

Но у меня есть эта ошибка:

неизвестный атрибут: pRODUCT_ID

Я не знаю, что делать?

Subject.rb

class Subject < ActiveRecord::Base 
belongs_to :product 
end 

Product.rb

class Product < ActiveRecord::Base 
has_many :comments, dependent: :destroy 
has_many :subjects 
validates :ean,:marque,:description, presence: true 
end 

Большое спасибо :)

+0

может у вас добавить, откуда вы отформатируете свою форму ...? а также ваш метод show_subject ..? –

ответ

0

Похоже, вы не перенастройки базы данных после создания модели Subject. Если вы это сделали, найдите миграцию, которая создает таблицу subjects, и убедитесь, что она добавляет столбец для product_id. Если у вас нет этого вам нужно создать миграцию для этого с:

rails g migration addProductIdColumnToSubject product_id:integer 
rake db:migrate 

Это будет заботиться о погрешности unknown attribute: product_id.

Теперь, если вы используете Rails 4, вам необходимо добавить этот атрибут в свой strong parameters в свой контроллер subjects.

В Rails 3, вам нужно добавить :product_id к attr_accessible декларации в Subject модели.

+0

Спасибо Диего! Это работает, но почему я должен добавить product_id? Почему рельсы не добавляются автоматически, когда я запускаю rake db: migrate? Например, у меня есть другие комментарии к таблице, которые связаны с другим столбиком и отлично работают без comment_id в файле переноса ... Любые объяснения? – CodeRevenger

+0

Это объяснит это красиво: http://guides.rubyonrails.org/association_basics.html – DiegoSalazar

+0

Thkes Diego, я проверю это;) – CodeRevenger

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