2012-11-21 13 views
5

व्हील - इस में लपेटी गई कई परियोजनाएं और मैंने कुछ (व्यापक) खोज नहीं किया है, इसलिए कोई फ्लेयर फेंकने के लिए यह देखने के लिए कि कोई और एक समान ढेर के साथ काम कर रहा है या कोई समाधान है।Activeoid में Formtastic के साथ Mongoid embeds_many/embedded_in संबंध ...?

मैं रेल 3 एप के लिए एक व्यवस्थापक इंटरफ़ेस बनाने के लिए Mongoid-enabled fork of ActiveAdmin का उपयोग कर रहा हूं।

एक्टिवएडमिन (जो फॉर्मेटास्टिक का उपयोग करके अपने फॉर्म बनाता है) अब तक खेल रहा है। लेकिन मैंगॉइड के embeds_many और embedded_in संबंधों के साथ इस ढेर का उपयोग करने की कोशिश करते समय मैंने एक झटके में भाग लिया है। मैं एक अच्छा नागरिक बनने की कोशिश कर रहा हूं और मोंगो के साथ उचित डेटा मॉडलिंग तकनीक का उपयोग कर रहा हूं, लेकिन फॉर्मटास्टिक के साथ खेलना प्रतीत नहीं होता है।

मैं जो विशिष्ट त्रुटि प्राप्त कर रहा हूं उसे साझा करूंगा, हालांकि यह गूढ़ हो सकता है।

यदि मैं एक अच्छा समाधान खोद नहीं पा रहा हूं, तो मैं इसे चूसूंगा और बस has_many और belongs_to का उपयोग करूंगा, भले ही मुझे पता है कि मैं मोंगोडीबी का मुख्य लाभ छोड़ दूंगा (ऐप नहीं होगा जुड़ने/एकाधिक प्रश्नों की कमी के लिए काफी बड़ा मुद्दा है, लेकिन मुझे लगा कि मैं चीजों को शुरुआत से सही तरीके से करूँगा!)।

class Location 
    include Mongoid::Document 
    embeds_many :events 
    field :venue_name, type: String 
end 

class Event 
    include Mongoid::Document 
    embedded_in :location 
    field :event_name, type: String 
end 

ActiveAdmin.register Event do 
    form do |f| 
    f.inputs do 
     f.input :event_name 
     f.input :location, :as => :select 
    end 
    f.buttons 
end 

यह f.input :location लाइन और फेंकने पर घुट रहा है:

ActionView::Template::Error (undefined method `event_id' for #<Event:0x007fa4224a20e0>): 
1: insert_tag renderer_for(:new) 

मैं :as => :check_boxes को :as => :select बदल गया है और वास्तव में सही स्थान प्रदर्शित करने के लिए यह मिल गया है (हालांकि चेक बॉक्स, एक का चयन करें या रेडियो नहीं के रूप में)। लेकिन पर्चे को जमा करने की बात है, मैं तो एक के साथ स्वागत कर रहा हूँ:

Mongoid::Errors::NoParent (
    Problem: 
    Cannot persist embedded document Event without a parent document. 
) 

कच्चे प्रस्तुत करने पर देख रहे हैं के लिए, यह मेरा चयन भेजने के रूप में मूल दस्तावेज़ (स्थान) की आईडी के बजाय "EVENT_ID" कोशिश कर रहा है।

वैसे भी - मेरा आंत यह है कि मैं यहां एक गोल छेद में स्क्वायर पेग फिट करने की कोशिश कर रहा हूं, लेकिन अगर किसी और के पास कोई विचार है, तो उनकी अत्यधिक सराहना की जाएगी।

उत्तर

-1

त्रुटि ने यह सब कहा। आप पहले बनाए गए पैरेंट के बिना एक एम्बेडेड रिकॉर्ड नहीं बना सकते हैं।

और हाँ, मुझे लगता है कि आपके मामले में_many और belong_to संबंध सही विकल्प होगा।

संबंधित मुद्दे