Ich entwickle eine einfache iOS-App, die eine Rails-App als Server-Backend verwendet. Ich verwende das Restkit-Framework für die Verwaltung der Server-Vernetzung / Anfragen und auf der iOS-Seite scheint alles in Ordnung zu sein.
Wenn ich eine PUT-Anfrage stelle, erhalte ich eine 200-Antwort zurück, und die Protokolle in XCode scheinen darauf hinzudeuten, dass alles in Ordnung ist. Wenn ich mir die Protokolle für die Rails-App ansehe, scheint auch alles gut zu sein, mit der folgenden Ausgabe:
2011-12-19T18:15:17+00:00 app[web.1]: Started PUT "/lists/3/tasks/6" for 109.156.183.65 at 2011-12-19 18:15:17 +0000
2011-12-19T18:15:17+00:00 app[web.1]: Parameters: {"created_at"=>"2011-12-12 22:37:00 +0000", "id"=>"6", "updated_at"=>"2011-12-12 22:37:00 +0000", "description"=>"Create a home page", "list_id"=>"3", "completed"=>"1"}
2011-12-19T18:15:17+00:00 app[web.1]: Task Load (4.3ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = $1 LIMIT 1 [["id", "6"]]
2011-12-19T18:15:17+00:00 app[web.1]: Processing by TasksController#update as JSON
2011-12-19T18:15:17+00:00 app[web.1]: (4.7ms) BEGIN
2011-12-19T18:15:17+00:00 app[web.1]: (1.5ms) COMMIT
2011-12-19T18:15:17+00:00 app[web.1]: Completed 200 OK in 48ms (Views: 1.1ms | ActiveRecord: 16.0ms)
2011-12-19T18:15:17+00:00 heroku[nginx]: 109.156.183.65 - - [19/Dec/2011:10:15:17 -0800] "PUT /lists/3/tasks/6 HTTP/1.1" 200 154 "-" "TaskM8/1.0 CFNetwork/485.13.9 Darwin/11.2.0" taskm8.com
2011-12-19T18:15:17+00:00 heroku[router]: PUT taskm8.com/lists/3/tasks/6 dyno=web.1 queue=0 wait=0ms service=114ms status=200 bytes=154
Wenn ich jedoch eine weitere Get-Anfrage stelle oder die Standard-Webansichten verwende, um die Daten zu betrachten, wurde die Änderung, die ich von der PUT-Anfrage erwartet hatte (Completed = 1 - was ein BOOL-Feld ist), nicht vorgenommen.
Ich kann aus dem Rails-Protokoll sehen, dass meine iOS-App die richtigen Parameter übergibt, also scheint es etwas auf der Rails-Seite zu sein. Ich habe durch die Schleife der Überwindung der CSRF-Fehlermeldung gewesen, so glaube nicht, dass es das ist.
Auf einer lokalen Version der Rails-App habe ich auch allgemeine Protokollierung gegen die MySql-Datenbank ausgeführt, um die Abfragen zu überwachen, die ausgeführt werden, versuchen, um zu sehen, wenn die PUT überhaupt etwas tut, oder etwas, das fehlschlagen würde ... im Protokoll, sehen Sie nichts anderes als:
BEGIN
COMMIT
Dasselbe wie das Schienenprotokoll.
Also, hat jemand eine Idee, warum die PUT nicht die Änderungen an den Daten macht, oder wie ich die PUT weiter debuggen kann?
Entschuldigen Sie, wenn dies eine wirklich einfache Frage ist, ich steige langsam wieder in die Entwicklung ein und bin etwas eingerostet!