5

Tôi đã có một hình thức lồng nhau (sử dụng đá quý nested_form Ryan B) sử dụng một has_and_belongs_to_many để has_and_belongs_to_many thiết lập:Tạo một kỷ lục mới ở dạng lồng nhau Rails HABTM

Opening has_and_belongs_to_many :contacts

Contact has_and_belongs_to_many :openings

Khi cố gắng thêm liên hệ mới vào phần mở đầu, trong trường hợp này tôi nhận được:

Can't mass-assign protected attributes: new_1346666966632

cho

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

Tôi đã thêm tương ứng "accepts_nested_attributes_for" và "attr_accessible", và đang xây dựng tiếp xúc tức là @ opening.contacts.build và @ opening.contacts.build (params [: mở] [: contact_attributes]) trong bộ điều khiển.

Tôi sẽ làm gì sai? Sẽ tốt hơn nếu sử dụng mối quan hệ has_many ở đây?

EDIT:

Xem:

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

Trong đó sử dụng một phần để tạo ra các lĩnh vực cho tiếp xúc lồng nhau:

<%= 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

thử thêm attr_accessible: contacts_attributes và kiểm tra – Amar

+0

xin lỗi, quên đề cập đến tôi đã nhận được điều đó quá –

+0

Thêm 'mã view' của bạn cũng – Samiron

Trả lời

2

Bạn cần phải được xây dựng/tạo các điểm tiếp xúc từ mở mô hình, trái với việc cố gán các contacts_attributes theo cách thủ công. mã điều khiển của bạn cần phải tìm kiếm một cái gì đó như:

@opening.update_attributes(params[:opening]) 

Kiểm tra các Rails guide for more info on using nested attributes

Các vấn đề liên quan