Drei Ebenen verschachtelte Formulare in Rails mit accresents_nested_attributes_for

7

Ich habe versucht, ein dynamisches Multi-Model-Formular mit accepts_nested_attributes_for in meiner Rails-Anwendung zu implementieren. Ich habe Eloy Durans Beispiel für komplexe Formulare verfolgt, das eine Implementierung auf zwei Ebenen zeigt, aber ich habe versucht, dies auf 3 Ebenen zu erweitern. Gibt es Unterstützung mit accepts_nested_attributes_for für ein 3-Level-Formular? Kann mir jemand zeigen, wie man die Beispielanwendung erweitert?

Ich habe das JavaScript teilweise funktioniert (funktioniert nicht immer aus irgendeinem Grund) für die 3. Ebene, aber ich kann nicht die Objekte der 3. Ebene speichern. Der Parametername, den es für jedes Attribut übergibt, lautet:

%Vor%

Wo Urgroßvater das Objekt ist, für das das Formular bestimmt ist, ist Großvater die erste Ebene, Elternteil ist die zweite Ebene und Objekt ist die dritte Ebene (die, die ich versuche zu speichern).

Danke, ich freue mich über Hinweise.

    
Anon 03.08.2009, 05:45
quelle

2 Antworten

18

Ich habe meine complex-form-examples aktualisiert, um mit Rails 2.3 zu arbeiten. Ein Beispiel für tief verschachtelte Modelle finden Sie in der tiefen Verzweigung .

%Vor%

Es ist die sauberste Lösung, die ich bisher gesehen habe. Wenn Sie Fehler oder Verbesserungen finden, fügen Sie ein Problem auf GitHub hinzu .

    
ryanb 04.08.2009, 23:37
quelle
2

Zunächst einmal vielen Dank Ryan für die Veröffentlichung Ihrer Lösung. Es funktioniert sehr gut in einer zweistufigen Form, aber ich habe Probleme, es in einer tieferen verschachtelten Form zu verwenden. Firebug gibt mir einen Javascriptfehler, wenn ich ein add_child_link in ein bereits hinzugefügtes Teil einfügen möchte. Es scheint einen Fluchtfehler zu geben.

Ich habe bereits versucht zu vermeiden, das innere Teil zu umgehen, indem ich eine andere Option an die Link-Methode übergebe, aber das funktioniert irgendwie nicht.

%Vor%

Irgendwelche Hinweise dazu?

Mit freundlichen Grüßen

Mike

    
user150971 25.08.2009 10:01
quelle