Wie aktualisiert man sauber eine Liste von HABTM Assoziationen in Rails 4?

8

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:

%Vor%

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.

Temporäre Lösung

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:

%Vor%

Das funktioniert gut, aber scheint mir nicht so zu funktionieren? Warum wird die adderss_ids nicht automatisch zugewiesen? Wie kann dies klar umgesetzt werden?

    
mrt 03.10.2013, 15:13
quelle

1 Antwort

9

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:

%Vor%

Das Eingabefeld name -Attribut ist ungefähr wie folgt:

%Vor%

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.

    
Andrew Hacking 04.10.2013, 12:53
quelle