Ich habe ein aktives Panel mit einer abhängigen Auswahl, d. h. die Auswahl in der ersten Dropdown-Liste beeinflusst, was in der zweiten Dropdown-Liste angezeigt wird.
Vor ein paar Monaten hat alles sehr gut funktioniert, aber ich habe erst gestern festgestellt, dass es nicht mehr funktioniert.
Ich habe herausgefunden, was den Fehler verursacht: Wenn ich den Eager loading ("include") entferne, funktioniert es wieder.
FUNKTIONIERT NICHT: (aktuelle Version):
%Vor%Ich erhalte diesen Fehler (Formular der Konsole von chrome dev tools)
%Vor%WORKING, wenn ich "include" / eager loading entfernen:
%Vor%Es funktioniert perfekt in diesem Fall.
Aber ich möchte wirklich gerne Subsektoren laden, also frage ich mich, was diesen Fehler verursacht, was sich geändert hat, seit es funktioniert hat. Ich habe ein paar Annahmen, aber ich kann den Schuldigen nicht finden.
Hat Rails 4 die Art geändert, wie ich find (params [: id] ..) verwenden soll oder wie ich eifrig laden soll
hat der aktive Admin die Art und Weise geändert, wie er das eifrige Laden bearbeitet: vielleicht funktioniert es nur auf dem Index und nicht auf den Bearbeitungsseiten ...
haben Turbolinks jetzt auf Rails 4 die Art geändert, wie ich eifrig laden muss?
Hier ist der Code:
- auf Active Admin
%Vor%- das Formular mit den 2 abhängigen Auswahlfeldern
%Vor%- das Javascript, das es antreibt:
%Vor%ADDED-Datei
%Vor% Wenn Sie ActiveRecord::find
aufrufen, bedeutet das, dass Sie ein einzelnes Modell aus der DB erwarten.
Dann beziehen Sie sich auf dieses Modell und rufen dealsubsectors
auf - ich nehme an, es ist has_many
Beziehung zu Ihrem Modell. Es wird 2 Anfragen erzeugen: erstens, um original DealSelector
zu holen, zweitens alle zusammen DealSubsectors
.
Es gibt nichts, was Sie optimieren können (außer Sie dealsubsectors
ist eine benutzerdefinierte Methode in Ihrem Modell, nicht die Relation).
Wenn Sie sehen, dass etwas Ihre DB mit Abfragen trifft - müssen Sie an anderer Stelle suchen. Sagen Sie, Ihr Formular - zeigen Sie nur einen Client pro Formular an? Ist dies nicht der Fall, werden alle DealSector- und DealSubsector-Elemente für jeden neuen Client erneut iteriert und abgerufen. Versuchen Sie, mehr Code bereitzustellen.
Warum können Sie nicht einfach alle DealSubsektor-Datensätze für das angegebene sector_id
abrufen?
Tags und Links javascript ruby-on-rails ruby-on-rails-4 activeadmin turbolinks