Puh - viele Projekte in diesem und ich habe einige (umfangreiche) Suche vergeblich getan, so werfen einen Flare, um zu sehen, ob jemand anders mit einem ähnlichen Stapel arbeitet und eine Lösung hat.Mongoids embeds_many/embedded_in Beziehungen mit Formtastic in ActiveAdmin ...?
Ich verwende eine Mongoid-enabled fork of ActiveAdmin, um eine Admin-Schnittstelle für eine Rails 3 App zu erstellen.
ActiveAdmin (die ihre Forms mit Formtastic erstellt) scheint bis jetzt zu spielen. Aber ich bin in einen Haken geraten, als ich versuchte, diesen Stapel mit Mongods embeds_many
und embedded_in
Beziehungen zu verwenden. Ich versuche, ein guter Bürger zu sein und die richtige Datenmodellierung mit Mongo zu verwenden, aber Formtastic scheint nicht mitspielen zu wollen.
Ich teile den spezifischen Fehler, den ich bekomme, obwohl es esoterisch sein kann.
Wenn ich nicht eine gute Lösung ausgraben kann, werde ich es saugen und einfach has_many
und belongs_to
verwenden, obwohl ich weiß, dass ich den Hauptvorteil von MongoDB aufgeben werde (die App wird nicht sein groß genug, um das Fehlen von Joins/Mehrfachabfragen ein Problem zu sein, aber ich dachte, ich würde die Dinge von Anfang an richtig machen!).
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
Es ist auf der f.input :location
Linie und Wurf Würgen:
ActionView::Template::Error (undefined method `event_id' for #<Event:0x007fa4224a20e0>):
1: insert_tag renderer_for(:new)
Ich habe die :as => :select
-:as => :check_boxes
und bekam tatsächlich die richtigen Standorte angezeigt werden (obwohl als Kontrollkästchen, kein wählen oder Radio). Aber nach dem Absenden des Formulars, bin ich dann mit einem grüßte:
Mongoid::Errors::NoParent (
Problem:
Cannot persist embedded document Event without a parent document.
)
In an der rohen Vorlage suchen, es versucht, meine Auswahl zu senden als „event_id“ anstelle der ID des übergeordneten Dokuments (Ort).
Wie auch immer - mein Bauchgefühl ist, dass ich versuche, einen quadratischen Pflock in ein rundes Loch hier zu passen, aber wenn jemand andere Gedanken hat, würden sie sehr geschätzt werden.