संक्षिप्तता के लिए मेरे सवाल का संपादन और अद्यतन करने के लिए मैं क्या किया है:मैं accepts_nested_attributes_for का उपयोग कैसे करूं?
मैं एक कंपनी के लिए एक से अधिक पते होने कैसे मॉडल और एक संपर्क के लिए एक एकल पता निर्दिष्ट करते हैं, और जब बनाने के लिए उन्हें प्रदान करने में सक्षम हो या एक संपर्क संपादित करना?
मैं एक नए संपर्क बनाने के समय एक पता जोड़ने के लिए सक्षम होने के लिए नेस्टेड विशेषताओं का उपयोग करना चाहते हैं। वह पता अपने मॉडल के रूप में मौजूद है क्योंकि मैं स्क्रैच से प्रवेश करने के बजाय मौजूदा पते से ड्रॉप-डाउन करने का विकल्प चाहता हूं।
मैं यह काम करने के लिए नहीं कर पा रहे। NilClass त्रुटि
यहाँ संपर्क के लिए मेरे मॉडल है:
class Contact < ActiveRecord::Base
attr_accessible :first_name, :last_name, :title, :phone, :fax, :email, :company,
:date_entered, :campaign_id, :company_name, :address_id, :address_attributes
belongs_to :company
belongs_to :address
accepts_nested_attributes_for :address
end
यहाँ पता के लिए मेरे मॉडल है:
class Address < ActiveRecord::Base
attr_accessible :street1, :street2, :city, :state, :zip
has_many :contacts
end
मैं चाहते हैं, जब मैं एक अपरिभाषित विधि `निर्माण 'शून्य के लिए मिलता है एक नया संपर्क बनाना, कंपनी के अन्य संपर्कों से संबंधित सभी पते तक पहुंचें।
class Company < ActiveRecord::Base
attr_accessible :name, :phone, :addresses
has_many :contacts
has_many :addresses, :through => :contacts
end
यहाँ कैसे मैं संपर्क के लिए _form के लिए दृश्य में एक क्षेत्र बनाने के लिए इतना है कि, जब कोई एक नया संपर्क बनाता है, वे पता मॉडल को पता पारित कोशिश कर रहा हूँ है: तो यहाँ कैसे मैं कंपनी का प्रतिनिधित्व करते है और संपर्क करने के लिए कि पते को संबद्ध:
<% f.fields_for :address, @contact.address do |builder| %>
<p>
<%= builder.label :street1, "Street 1" %> </br>
<%= builder.text_field :street1 %>
<p>
<% end %>
जब मैं संपादित करने के लिए प्रयास करते हैं, स्ट्रीट 1 के लिए क्षेत्र को खाली है। और मुझे नहीं पता कि show.html.erb से मूल्य कैसे प्रदर्शित करें।
तल में मेरी त्रुटि कंसोल है - पता तालिका में मान बनाने के लिए प्रतीत नहीं कर सकते हैं:
मेरे संपर्क नियंत्रक इस प्रकार है:
def new
@contact = Contact.new
@contact.address.build # Iundefined method `build' for nil:NilClass
@contact.date_entered = Date.today
@campaigns = Campaign.find(:all, :order => "name")
if params[:campaign_id].blank?
else
@campaign = Campaign.find(params[:campaign_id])
@contact.campaign_id = @campaign.id
end
if params[:company_id].blank?
else
@company = Company.find(params[:company_id])
@contact.company_name = @company.name
end
end
def create
@contact = Contact.new(params[:contact])
if @contact.save
flash[:notice] = "Successfully created contact."
redirect_to @contact
else
render :action => 'new'
end
end
def edit
@contact = Contact.find(params[:id])
@campaigns = Campaign.find(:all, :order => "name")
end
यहाँ का एक टुकड़ा है मेरी त्रुटि कंसोल: मैं विशेषता पोस्ट कर रहा हूँ, लेकिन यह पता तालिका में नहीं बना रहा है ....
प्रसंस्करण ContactsController # करोड़ { "प्रतिबद्ध" => "भेजें", "authenticity_token" => "d8/gx0zy0Vgg6ghfcbAYL0YtGjYIUC2b1aG +:
[पोस्ट] पैरामीटर (2010-05-12 21:16:17 पर 127.0.0.1 के लिए) eate डीडीकेजूएस = ", " संपर्क "=> {" company_name "=>" सहयोगी ", " शीर्षक "=>" "," campaign_id "=>" 2 ", " address_attributes "=> {" street1 "=> "एबीसी"}, "फैक्स" => "", "फोन" => "", "last_name" => "", "date_entered" => "2010-05-12", "ईमेल" = > "", "first_name" => "abc"}}
कंपनी लोड (0.0ms) [0 मी [0mSELECT * "कंपनियों" से कहां ("कंपनियां"। "नाम" = 'सहयोगी') LIMIT 1 [0m
पता बनाएं (16।0ms) [0m
[0; 1mINSERT में "पतों" ("शहर", "ज़िप", "created_at", "street1", "updated_at", "street2", "राज्य") मूल्यों (शून्य, शून्य, '2010-05-13 04:16:18', शून्य, '2010-05-13 04:16:18', शून्य, शून्य) [0mसंपर्क बनाएँ (0.0ms) [0m
[0mINSERT में "संपर्क" ("कंपनी", "created_at", "शीर्षक", "updated_at", "CAMPAIGN_ID", "address_id", "last_name", "फोन", "फैक्स", " company_id "," date_entered ", " first_name "," ईमेल ") VALUES (NULL, '2010-05-13 04:16:18', '', '2010-05-13 04:16:18', 2, 2, '', '', '', 5, '2010- 05-12 ',' एबीसी ',' ') [0 मिनट
हम्म मुझे लगता है कि, पता तालिका में insers मूल्य बनाता है यहाँ जहां पता (16.0ms) [0m [0 बनाएं है, 1mINSERT में "पतों" ("शहर", "ज़िप", "created_at", "street1 "," अपडेट_ट "," स्ट्रीट 2 "," स्टेट ") वैल्यूज (न्यूल, न्यूल, '2010-05-13 04:16:18', न्यूल, '2010-05-13 04:16:18', न्यूल, नल) [0 एम – dombesz
मेरी पोस्ट अपडेट की गई, विचारों में कोड शामिल किया गया। – dombesz
आप देख सकते हैं कि पता के तहत street1 के लिए मान बनाएं खाली हैं ... नहीं "abc" .... – Angela