5

Mam zagnieżdżonych formularza (przy użyciu nested_form gem Ryan B) za pomocą has_and_belongs_to_many do has_and_belongs_to_many Setup:Tworzenie nowego rekordu w szynach HABTM zagnieżdżonego formularza

Opening has_and_belongs_to_many :contacts

Contact has_and_belongs_to_many :openings

podczas próby Dodawanie nowego kontaktu do otworu, w tym przypadku pojawia się:

Can't mass-assign protected attributes: new_1346666966632

dla

"opening"=>{"contacts_attributes"=>{"new_1346666966632"=>{"contacts"=>{"name"=>"Test Contact",

Dodałem odpowiada "accepts_nested_attributes_for" i "attr_accessible" i buduję kontakt tj @ opening.contacts.build i @ opening.contacts.build (params [: Otwarcie] [: contact_attributes]) w kontrolerze.

Gdzie się mylę? Czy byłoby lepiej skorzystać z relacji has_many through?

EDIT:

Widok:

<%= simple_nested_form_for @opening, :wrapper => :plain do |f| %> 
    <%= f.link_to_add "Add a contact", :contacts %> 
    <%= f.button :submit %> 
<% end %> 

który wykorzystuje słabość do generowania pola dla zagnieżdżonego kontakt:

<%= f.fields_for :contacts, @opening.contacts.build do |contact_form| %> 
    <%= contact_form.input :name, :label => false, :input_html => { :class => 'span6' } %> 
    <%= contact_form.input :company, :label => false, :input_html => { :class => 'span6' } %> 
    <%= contact_form.input :telephone, :label => false, :input_html => { :class => 'span6' } %> 
    <%= contact_form.input :email_address, :label => false, :input_html => { :class => 'spa12' } %> 
<% end %> 
+0

spróbować dodać attr_accessible: contacts_attributes i sprawdzić – Amar

+0

przepraszam, zapomniałem wspomnieć już mam, że zbyt –

+0

Dodać 'kody view' także – Samiron

Odpowiedz

2

Musisz być budowa/tworzenie kontaktów z otwierający model, w przeciwieństwie do próby przypisania atrybutów kontaktów ręcznie. Kod kontroler musi wyglądać następująco:

@opening.update_attributes(params[:opening]) 

Sprawdź Rails guide for more info on using nested attributes

Powiązane problemy