Whew - bu projeye çok fazla proje sarıldı ve boşuna (bazı) kapsamlı aramalar yaptım, böylece başka birinin benzer bir yığınla çalışıp çalışmadığını ve bir çözümü olup olmadığını görmek için bir parlama fırlatıyorum.Mongoid, ActiveAdmin'de Formtastic ile embedded_many/embedded_in ilişkileri ...?
Rails 3 uygulaması için bir yönetici arayüzü oluşturmak için Mongoid-enabled fork of ActiveAdmin kullanıyorum. Şimdiye kadar (Formtastic kullanarak formlarını oluşturan) ActiveAdmin şimdiye kadar oynamak gibi görünüyor. Ancak bu yığının Mongoid'in embeds_many
ve embedded_in
ilişkileriyle kullanılmaya çalışılmasında bir takla atıyorum. İyi bir vatandaş olmaya çalışıyorum ve Mongo ile uygun veri modelleme tekniğini kullanıyorum ama Formtastic birlikte oynamak istemiyor.
Belirli bir hatayı paylaşıyorum, ancak esoteric olabilir.
Eğer iyi bir çözüm bulabilirsem, MongoDB'nin ana avantajından vazgeçmeyeceğimi bilmeme rağmen has_many
ve belongs_to
'u kullanıyorum. Katılma/çoklu sorgular olmaması için yeterince büyük bir sorun, ama ben baştan doğru şeyler şeyler yapacağım düşündüm!). Bu f.input :location
hattı ve atma boğulmadan
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
:
ActionView::Template::Error (undefined method `event_id' for #<Event:0x007fa4224a20e0>):
1: insert_tag renderer_for(:new)
Ben :as => :check_boxes
için :as => :select
değişti ve aslında doğru Konumları görüntülemek için aldım (gerçi onay kutularını, seçkin veya radyo olarak değil). Ama formu göndererek üzerine, o zaman bir ile karşılandı ediyorum: Çiğ sunulması baktığımızda
Mongoid::Errors::NoParent (
Problem:
Cannot persist embedded document Event without a parent document.
)
, bunun yerine üst belgesi (Yer) ait id "EVENT_ID" olarak benim seçim göndermeye çalışıyor. Her neyse - benim bağırsağım, buradaki yuvarlak bir deliğe kare bir mandal takmaya çalışıyorum, ama eğer herhangi birinin herhangi bir fikri varsa, çok takdir edilecektir.