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.
beziehen Sie sich auf dieses PRO Railscasts für verschachtelte Assoziation ... seine große RAILSCASTS PRO Episode für verschachtelte Assoziation
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]
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.
Versuchen Sie Folgendes:
Rails-Konsole
%Vor%Vielleicht möchten Sie auch Artikelparameter bearbeiten, nur um es zu einem einfachen Objekt zu machen.
Tags und Links ruby-on-rails activerecord ruby-on-rails-4 nested-attributes