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
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '371091',
    'url' => 'how-to-cleanly-update-a-list-of-habtm-associations-in-rails-4',
];

$_COOKIE = [
    'advanced-frontend' => '208d278c9a78bf021c926df7844d1867',
    '_csrf-frontend' => 'cebb75a0a7790c41fa49e2a7b59d8c92d43278b5e77da87c7e0e4504aa9bbbf0a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"8rBOVuTou_MYkbHFHhAsy10OakuUajD4";}',
];

$_SESSION = [
    '__flash' => [],
];