From 80fd95ea90a43c7e8648c7d49597985f7244e9b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Remy?= Date: Sun, 11 Jan 2015 09:05:16 +0100 Subject: [PATCH] render should only call next after the rendering engine is done with the page & template --- lib/controller-extensions.js | 41 ++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/lib/controller-extensions.js b/lib/controller-extensions.js index 91af2b1..e5bfb77 100644 --- a/lib/controller-extensions.js +++ b/lib/controller-extensions.js @@ -75,7 +75,20 @@ Controller.prototype.render = function render(view, params, callback) { file = calcView(compound, file, params); if (!layout) { - return self.renderView(file); + return self.renderView(file, function(err, html) { + if(err) { + return self.next(err); + } + + if (self.logger) { + self.logger.emit('render', file, "NONE", Date.now() - start); + } + + self.res.send(html); + if (self.context.inAction) { + return self.next(); + } + }); } self.renderView(file, function(err, html) { @@ -83,11 +96,20 @@ Controller.prototype.render = function render(view, params, callback) { return self.next(err); } self.viewContext.body = html; - self.renderView(layout); - if (self.logger) { - self.logger.emit('render', file, layout, Date.now() - start); - } + self.renderView(layout, function(err, html) { + if(err) { + return self.next(err); + } + if (self.logger) { + self.logger.emit('render', file, layout, Date.now() - start); + } + + self.res.send(html); + if (self.context.inAction) { + return self.next(); + } + }); }); function getLayoutName() { @@ -152,14 +174,7 @@ Controller.prototype.renderView = function renderView(view, callback) { throw err; } } - if (callback) { - this.res.render(filename, this.viewContext, callback); - } else { - this.res.render(filename, this.viewContext); - if (this.context.inAction) { - this.next(); - } - } + this.res.render(filename, this.viewContext, callback); }; Controller.prototype.helpers = function () {