Ich versuche, einen User
Datensatz mit der Liste der assoziierten Addresses
zu aktualisieren, verbunden durch die hat und zu vielen Assoziationen gehört.
Der Anfragetext, den ich über javascript sende, lautet:
%Vor%Das erhalte ich im Rails-Serverprotokoll :
Gestartet PUT "/ api / users / 10" für 127.0.0.1 am 03.10.2013 16:30:43 +0200
Verarbeitung von Api :: UsersController # Aktualisierung als HTML
Parameter: {"id" = & gt; "10", "name" = & gt; "John Smith", "adressen_ids" = & gt; [4, 8], "Benutzer" = & gt; {"id" = & gt; "10", "Name" = & gt; "John Smith"}}
Die oben zu beachtende Sache ist, dass das address_ids
-Array es nicht in den user
-Hash gemäß dem Protokoll bringt.
Im Controller verwende ich starke Parameter und aktualisiere die User
wie folgt:
Das Problem ist, dass die Attribute die address_ids zum Zeitpunkt der Aktualisierung nicht enthalten, so dass die zugehörigen Datensätze nicht aktualisiert werden.
Ich habe das Problem manuell behandelt, indem ich den address_ids
Schlüssel dem attributes
manuell zugewiesen habe, nachdem sie von der Überprüfung der starken Parameter wie folgt zurückgekommen sind:
Das funktioniert gut, aber scheint mir nicht so zu funktionieren?
Warum wird die adderss_ids
nicht automatisch zugewiesen? Wie kann dies klar umgesetzt werden?
Wenn Sie möchten, dass die Adressen mit dem Benutzer gespeichert werden, müssen Sie sicherstellen, dass Ihr clientseitiger Code die Parameter address_ids
wie folgt sendet:
Das Eingabefeld name
-Attribut ist ungefähr wie folgt:
Ich habe auch bemerkt, dass Sie anscheinend Ihre Benutzerattribute in Ihren Parametern wiederholt haben, also sollten Sie sorgfältig prüfen, wie Ihr Client-Code die Anfrage generiert.
Tags und Links ruby-on-rails ruby-on-rails-4 strong-parameters has-and-belongs-to-many