2015-12-22 6 views
0

Я использую form_for и fields_for для создания компании, адреса и company_person.fields_for не удается создать объект

Вот соответствующая часть модели компании:

class Company < ActiveRecord::Base 
has_many :company_people 
    accepts_nested_attributes_for :company_people 
has_many :addresses, as: :location 
    accepts_nested_attributes_for :addresses 

Я добавил соответствующие параметры в контроллер компаний:

def company_params 
    params.require(:company).permit(:name, :email, :phone, 
    :website, :ein, :description, 
    {company_person_params: [:first_name, :last_name, :phone, :email]}, 
    addresses_attributes: [:id, :street, :city, :zipcode]) 
end 

А вот часть контроллера компаний, которая делает работы:

@company = Company.new 
@company.assign_attributes(company_params) 
@company.agencies << Agency.first 
@company.company_people.build 
@company.company_people << @company_person 
if @company.save 
    flash.notice = "Success!" 

Это нормально работает для адреса - его обрабатывают "@ company.assign_attributes (company_params)". Сохранено, и я не могу распечатать его на странице подтверждения. Но company_person не происходит. Я получаю ничтожное исключение для всего. Я следовал этому руководству: http://guides.rubyonrails.org/form_helpers.html#nested-forms, но я все еще застрял.

Что я делаю неправильно?

ответ

0

Похоже, что ваш объект company не имеет значения для атрибута company_person. Наверное, это связано с тем, как настроены ваши модели. ваш Company и CompanyPerson модель должна иметь отношения один-ко-многим определяются:

class Company < ActiveRecord::Base 
    has_many :company_people 
    #whatever else 
end 

class CompanyPerson < ActiveRecord::Base 
    belongs_to :company 
    #whatever else 
end 

Это при условии, что ваш первичный ключ по умолчанию id. Если нет, вам нужно сказать Rails, что это такое.

Вы можете найти более подробную информацию о ActiveRecord ассоциаций здесь: http://guides.rubyonrails.org/association_basics.html

+0

Спасибо. Я решил проблему ассоциаций и подтвердил, что это не та форма, которая виновата. Я собираюсь переписать свой вопрос в соответствии с новой информацией –

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