何らかの理由でセッション フラッシュは機能しres.render()
ますが、セッション フラッシュを設定してからリダイレクトしようとすると、表示されません。問題は以下のelse
節の連絡方法にあります)...
これは、リダイレクト中にコンソールに記録されるものです。
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{ info: [ 'Thanks we will return your message soon' ] }
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
ご覧のとおり、メッセージは間違いなくそこにありますが、空のオブジェクトに置き換えられているように見えます。
これが私のコードです:
app.js
var flash = require('connect-flash');
// Grab sessions
var sessionFlash = function(req, res, next) {
res.locals.messages = req.flash();
console.log(res.locals.messages);
next();
}
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(viewHelpers());
app.use(express.bodyParser({ uploadDir : './' }));
app.use(expressValidator);
app.use(express.methodOverride());
app.use(express.cookieParser('keyboard cat'));
app.use(express.session({
secret: config.secret,
cookie: {
maxAge: 365 * 24 * 60 * 60 * 1000
},
store: new MongoStore(config.db)
}));
app.use(flash());
app.use(sessionFlash);
app.use(express.static(__dirname + '/public'));
app.use(app.router);
});
views/layout.jade
- if (typeof message !== 'undefined')
=message
controllers/index.js
function controllers(params) {
controllers.contact = function(req, res) {
if (errors) {
// This works as intended
req.flash('info', 'Please fix the errors below.');
res.render('contact', {
title : 'Contact -',
message: req.flash('info'),
errors: errors,
params: params
});
return;
} else {
// This doesn't work
req.flash('info', 'Thanks we will return your message soon');
res.redirect('/');
}
};
return controllers
}
module.exports = controllers;