Rails - aktualisiert nested_attributes nicht für eine Eins-zu-viele-Beziehung

9

Ich versuche, nested_attributes zu implementieren, und die Erstellung eines Zeitplans funktioniert. Aber es scheitert bei der Bearbeitung, ohne irgendwelche Fehler zu geben. Es funktioniert mit eins zu eins Beziehung, aber nicht für eins zu viele . Ich gebe die ID des Zeitplans wie in diesem Dokument angegeben weiter: NestedAttributes

Ich habe diese Modelle:

%Vor%

und hier ist ein Ausschnitt des Controllers für das Whitelisting starker Parameter:

%Vor%

Und hier ist ein Beispiel, das ich über die rails-Konsole ausprobiert habe :

%Vor%

Es hat den richtigen Zeitplan ausgewählt, aber keine Aktualisierungsabfrage und keine Fehler. Fehle ich hier etwas?

BEARBEITEN:

Ich verwende Ruby 2.0 und Rails 4.

    
MoMo 25.10.2013, 09:32
quelle

6 Antworten

1

beziehen Sie sich auf dieses PRO Railscasts für verschachtelte Assoziation ... seine große RAILSCASTS PRO Episode für verschachtelte Assoziation

    
Milind 10.06.2014 10:34
quelle
0

Hier sind einige Ideen für Sie:

%Vor%

Sollte sein:

%Vor%     
Richard Peck 26.10.2013 13:01
quelle
0

Das Problem hier scheint, dass Sie keine starken Parameter und accepts_nested_attributes_for korrekt verwenden.

Können Sie es versuchen

?

Modell

%Vor%

Controller-Datei

%Vor%

Es ist idiotisch für mich, dass Schienen sowohl starke Parameter als auch accepts_nested_attributes_for benötigen, um auf diese Weise zu arbeiten, aber vielleicht verpasse ich etwas.

Probieren Sie auch .update_attributes! mit einem ! aus, dies wird Rails mitteilen, dass es Fehler gibt, damit Sie wissen, was los ist.

Sie haben article[schedules_attributes][0][schedule_for] in Ihrem für, ich bin nicht 100% positiv, aber ich glaube, dass dies gesendet wird als     params [: article] [: schedules_attributes_0] [schedule_for]

Können Sie article[schedule_attributes][][attribute_name]

verwenden?     
OneChillDude 26.10.2013 05:38
quelle
0

Bitte schauen Sie sich die Option inverse_of in der Dokumentation an, die mit Ihrer Frage verknüpft ist

Benutze es in den Modellen:

%Vor%     
Semjon 18.11.2013 11:48
quelle
0

Ich denke, das Problem hier hat damit zu tun, wie Sie es testen. Wenn Sie sich die Dokumentation ( Ссылка ) unter "Eins-zu-viele" ansehen, werden Sie sehen Das folgende Beispiel für die Verwendung der verschachtelten Assoziation zur Erstellung von Widersprüchen:

%Vor%

Das von Ihnen gepostete Beispiel übergibt das schedules_attributes nicht als Array , sondern als Hash , was nicht die richtige Verwendung zu sein scheint. Obwohl dieses Beispiel für ActiveRecord::Base.create gilt, sollte dasselbe für ActiveRecord::Base#update_attributes gelten.

    
Andreas Kavountzis 17.03.2014 21:12
quelle
0

Versuchen Sie Folgendes:

Rails-Konsole

%Vor%

Vielleicht möchten Sie auch Artikelparameter bearbeiten, nur um es zu einem einfachen Objekt zu machen.

    
user2511531 24.11.2014 13:53
quelle