Hallo,
ich arbeite gerade an einem Formular zum Anlegen eines neues Eintrages
und möchte dies mittels AJAX noch vor der Speicherung auf eventuelle
Duplikate überprüfen. Wir ein ähnlicher Eintrag gefunden, soll der
Nutzer darauf hingewiesen werden und auswählen, ob der gefundene Eintrag
ein Duplikat ist.
Die Prüfung sollte am besten noch vor dem Absenden des Formulars
stattfinden, damit sich der Nutzer im Zweifelsfall es sich sparen kann,
das gesamte restliche Formular auszufüllen. Sobald die für die
Validierung nötigen Parameter (SSID, Adresse, PLZ/Ort) in das Formular
eingegeben wurde, soll die Überprüfung stattfinden und darunter eine
Meldung ausgegeben werden, wenn ein ähnlicher Eintrag gefunden wurde.
Theoretisch müsste ich ja die vier Felder per JavaScript überwachen und
sobald in allen eine value vorhanden ist, dann einen Request (inklusive
der Inhalte aus den bis dahin ausgefüllten Felder) auf den Controller
mit der Validierung absetzen. Der Controller (mit Hilfe des Models) auf
Duplikate und gibt ggf. die Meldung zurück, welche per JS ins DOM
eingefügt wird.
Das Absenden des Formulars an sich soll nicht über AJAX laufen, sondern
nur die Validierung(en). Später prüft dann der Controller zum Eintragen
der Daten, ob eine Validierung durchgeführt wurde. Wenn nicht (weil kein
JavaScript aktiviert war), wird die Validierung im Controller
durchgeführt und ggf. ein Fehler zurückgeliefert. Zusätzlich müssten
hier noch Überprüfungen stattfinden, ob ein Duplikat gefunden wurde und
ob der Nutzer eine Checkbox ausgewählt hat die besagt, dass der
gefundene Eintrag kein Duplikat ist.
Soweit sind derzeit meine theoretischen Grundgedanken zu dem Ablauf und
Realisierung des Szenarios. Ist dies mit Rails Boardmitteln möglich oder
soll in den nötigen JS-Code lieber gleich selber schreiben? Oder bin ich
ganz auf dem Holzweg mit meinen Gedanken? In den ganzen Rails Büchern
wird AJAX ja immer auf ganze Formulare angewendet. Bisher habe ich
leider noch kein Beispiel für eine Validierung eines einzelnen Feldes
(und in meinen Beispiel von eine Gruppe von Feldern) gefunden.
Gibt es in Rails eine Möglichkeit, dieses Szenario mittels Tests
(Functional und/oder Integration) abzudecken? Theoretisch müsste ich ja
das Ausfüllen eines “halben” Fomulares simulieren und überprüfen, ob
bestimmte Ausgaben (z.B. der Hinweis) ausgegeben wurden.
Viele Grüße,
Christian