2011-02-18 17 views
14

ben çok katmanlı iç içe formuiçiçe 'değil kitlesel atamalı korumalı özellikler

 
User->Tasks->Prerequisites 

var ve aynı formda

 
User->Tasks->Location 

konum formu çalışıyor bir uyarı Can tetikleme Şimdi mevcut görev için önkoşulları belirtmeye çalışıyorum. Ön koşul, tamamlanmış_task alanında saklanan bir task_id dosyasıdır. Ben formu gönderdiğinizde

, ben çıktıda kullanıcı her görev için

 
WARNING: Can't mass-assign protected attributes: prerequisite_attributes 

Bir uyarı aşağıdaki hatayı alıyorum.

ben alan adını sağlamak, bununla ilgili tüm diğer sorular geçtiniz: my modeline attr_accessible ekleyerek completed_task doğru başvuruluyor,

(o zaten vardı ve bunu genişletilmiş).

Başka ne yapacağımı bilmiyorum.

Benim modelleri

 
class Task < ActiveRecord::Base 
    attr_accessible :user_id, :date, :description, :location_id 

    belongs_to :user 
    has_one :location 
    accepts_nested_attributes_for :location 
    has_many :prerequisites 
    accepts_nested_attributes_for :prerequisites 
end 

class Prerequisite < ActiveRecord::Base 
    attr_accessible :completed_task 

    belongs_to :task 
end 

formu formtastic kullanır gibi görünüyorum ve

 
<%= f.semantic_fields_for :prerequisites do |builder3| %> 
    <%= render 'prerequisite_fields', :f=>builder3 %> 
<% end %> 

--- _prerequisite_fields.html.erb ----- 
< div class="nested-fields" > 
    <%= f. inputs:completed_step %> 
</div> 

herhangi bir öneriniz yoluyla formu dahil değilim?

+0

+1 bu soruyu sormak için, ben de aynı şeyi arıyordum! – weltschmerz

cevap

26

Ekleme: prerequisite_attributes başladığınız kitlesel atama almak mı

attr_accessible :user_id, :date, :description, :location_id, :prerequisite_attributes

amacıyla attr_accessible için.

+1

yup, bunu yaptı. Bu önerilen yol mu? İç içe geçmiş formumda buna ihtiyacım yoktu. Önceden şunu ekledim: önkoşullar modeline önkoşullar önkoşullar modelini ekledim, bu benim hatamdı sanırım – pedalpete

+0

Evet, formunuzda kaynakları bu şekilde iç içe geçirdiğinizde, parametreleri resource_attributes karma olarak geçirirsiniz. Bu, kitlesel atamanın tanımlamasıdır, dolayısıyla onu attr_accessible içine dahil etmeniz gerekir. – jtesch