1

何らかの理由でセッション フラッシュは機能し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;
4

1 に答える 1

0

サーバーが応答しない「/」にリダイレクトしています。

app.get('/', function(req, res){...});app.js にありません

フラッシュ メッセージは、同じクライアントからの 2 つの要求の間にサーバーに保存されるメッセージであり、次の要求でのみ使用できます。あなたが何もしないので、フラッシュは表示されres.redirect('/');ません。

于 2013-02-17T15:23:46.023 に答える