2009-06-16 4 views
0

Könnte mir bitte jemand erklären, warum ich einen ActionView :: TemplateError erhalte, wenn ich AJAX verwende, um die Schnittstelle zu aktualisieren, während ich den folgenden Code benutze :(Ruby, Rails, AJAX) TemplateError für die zweite Ebene teilweise während der AJAX-Aktualisierung

CODE

ich habe die folgende Struktur: Site -> Gebäude -> Steuerung. Jeder scrollt durch seine Sammlung von Elementen und rendert eine partielle für jeden. Von Baustelle zu Gebäude funktioniert gut. Wenn Sie jedoch von Building on auf Control wechseln, wird der Vorlagenfehler ausgelöst.

Es ist bemerkenswert, dass Controls nur gut hinzugefügt werden, und wenn ich die Seite aktualisieren, funktioniert der ganze Code - aber aus irgendeinem Grund, wenn ich versuche, die AJAX-Sache zu tun, die teilweise (nicht die "rjs" -Datei) löst einen Fehler aus.

Irgendwelche Gedanken? Ich entschuldige mich, wenn dies zu vage ist.

Am besten.

EDIT - Der Fehler wird wie folgt dar: TEMPLATE ERROR

Antwort

0

Lassen Sie uns den Fehler dekonstruieren Sie erhalten:

ActionView :: TemplateError (nicht definierte Methode `steuert für #) auf der Linie # 21 von app/views/site_manager/_building.html.erb

der erste Teil ActionView::TemplateError ist nur die Art der Ausnahme ausgelöst und nicht wirklich interessant in diesem Fall. Der nächste Teil ist jedoch:

nicht definierte Methode `steuert für # < Steuerung: 0x21f61f0 >

Diese im Grunde sagt Ihnen, dass Sie versuchen, eine Methode controls auf einem Objekt aufgerufen aufzurufen, ist eine Instanz des Steuerungsmodells. Sie erfahren außerdem, dass die Methode controls für diese Instanz nicht definiert ist.

on line # 21 von app/views/site_manager/_building.html.erb

Die oben zeigt Ihnen, wo die Quelle dieses Fehlers zu finden, nämlich die Leitung 21 in der site_manager/Aufbau Teil . Diese Zeile wie folgt aussieht:

<%for control in building.controls%> 

In dieser Linie versucht man, eine controls Methode auf eine Variable zu nennen, das ist, was nicht funktioniert Nachricht nach dem Fehler; Die Methode controls ist für diese Variable nicht definiert. Die Fehlermeldung hat Ihnen auch mitgeteilt, dass die Variable eine Instanz Ihres Control-Modells enthält.

Jetzt haben Sie die Variable building benannt, aber es enthält eine Instanz von Control, die mich zu der Annahme verleitet, dass Sie irgendwie einen anderen Wert in die Variable building gesetzt haben, als Sie beabsichtigten.

Leider zeigen Sie nicht den Code, der den Wert der Variablen building zuweist, damit ich nicht näher auf eine echte Antwort für Sie kommen kann. Hoffentlich reicht das obige, um Sie zu einer Lösung zu führen.

Verwandte Themen