2012-06-14 14 views
5

Ich habe eine Frage zu den Vor- und Nachteilen von g: render und g: include. In meiner Anwendung habe ich ein Stück Code, der einige Informationen zeigt, die in einigen gsp wiederholt werden müssen, was es zeigt, hängt von ein wenig Logik ab.
Ich habe Zweifel, ist es besser eine verwenden g: einschließlich oder g: render ???
Also, ist es besser, die Logik auf einem Controller, der ein Modell an die Seite, die ein Layout mit dem g: render enthalten übergeben, oder ist besser, ag: Include zu einer anderen Aktion in einem anderen Controller in der gsp das die Logik dieses Stückes ausführen?
Ich bevorzuge die zweite Wahl, aber wie stark beeinflusst es die Leistung?g: include vs g: render

Antwort

9

Sie werden nur in verschiedenen Fällen verwendet. Sie verwenden , wenn Sie einen Controller haben, der einen Inhalt zurückgibt, der leicht in mehrere GSPs eingebettet werden kann. Dies ist auch nützlich, wenn Sie eine hohe Menge an Datenverkehr haben, bei dem Sie tatsächlich auf Controller-Ebene cachen, da Sie viel Overhead vermeiden können.

<g:render.../> ist nützlich, wenn Sie Modularität innerhalb Ihrer Seite benötigen. Speziell für AJAX-Aufrufe, bei denen Sie zunächst einen Teil der Seite laden und dann basierend auf einem AJAX-Ereignis aktualisieren möchten.

Beide können verwendet werden, um Inhalte wiederzuverwenden, und beide sind im richtigen Kontext geeignet.

0

g: render ist nützlich, wenn Sie an Teilvorlagen arbeiten und Sie haben das Modell, das Sie benötigen usw. Wenn Sie jedoch zusätzliche (oder umfangreiche) Fortschritte benötigen, um zusätzliche, aussagekräftigere Dinge an Ihre Ansicht (Vorlage) zu übergeben Es ist besser, g: include zu verwenden. Mit g: include haben Sie auch einen schönen Controller und das bedeutet viel mehr lesbaren Code mit diesem Controller. Und es würde keinen Leistungsvergleich zwischen "Übergabe an eine Controller-Aktion und rendern einer Ansicht ohne zusätzliche Operation" und "rendern einer Ansicht" geben.