Ich möchte einen Teil erstellen, der ein paar Sekunden dauert, um zu rendern. Ich habe Funktionen gesehen, die Proxies verwenden, um den Cache über HTTP vorzuladen, aber ich hätte gerne eine "interne" Lösung.Pre-Build-Fragment-Cache (interner Ansatz)
Dies ist meine Funktion, die aufgerufen wird, wenn myobject
aktualisiert:
def pre_build_partial myobject
the_controller = ActionController::Base.new
the_controller.instance_variable_set '@myobject', myobject
view_renderer = ActionView::Renderer.new the_controller.lookup_context
view_renderer.render the_controller.view_context, { partial: 'mypartial', layout: false }
end
Es funktioniert für partials fein, die grundlegende Helfer verwenden, aber meine benutzerdefinierten Helfer werfen Fehler:
undefined method `my_custom_helper_function' for #<#<Class:...>
Ich denke, der Helfer muss in the_controller
enthalten sein, aber ich finde keinen Weg, dies zu tun. Danke für jede Hilfe im Voraus!
Können Sie mir zeigen, die Sie auf die Codes setzen Datei? –
willst du wahrscheinlich 'ApplicationController.new' denn da ist schon alles drin? – phoet
Phoets Vorschlag ist ziemlich elegant. Nicht die leichteste Lösung (Sie würden im Idealfall nur den Helfer, den Sie brauchen), aber wenn es funktioniert, bewegen Sie sich in die richtige Richtung. Bitte geben Sie uns ein Update. – Ecnalyr