व्हील - इस में लपेटी गई कई परियोजनाएं और मैंने कुछ (व्यापक) खोज नहीं किया है, इसलिए कोई फ्लेयर फेंकने के लिए यह देखने के लिए कि कोई और एक समान ढेर के साथ काम कर रहा है या कोई समाधान है।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" कोशिश कर रहा है।
वैसे भी - मेरा आंत यह है कि मैं यहां एक गोल छेद में स्क्वायर पेग फिट करने की कोशिश कर रहा हूं, लेकिन अगर किसी और के पास कोई विचार है, तो उनकी अत्यधिक सराहना की जाएगी।