Flash消息不能正常工作express / nodejs / ejs

时间:2017-12-13 04:34:46

标签: javascript node.js html5 flash-message

Flash消息似乎无法正常工作,我认为我遗漏了一些非常明显的东西,但我已经花了一个小时,而且我仍然不知道为什么它不起作用。

我的中间件:

// Session middleware
app.use(session({
  secret: 'stuffedbagels',
  resave: true,
  saveUninitialized: true
}));

// Express Messages middleware
app.use(require('connect-flash')());
app.use(function(req, res, next) {
  res.locals.messages = require('express-messages')(req, res);
  next();
});

应用程序路由,仅用于测试目的。

// Route that creates a flash message using the express-flash module
app.all('/express-flash', function( req, res ) {
    req.flash('success', 'This is a flash message using the express-flash module.');
    res.redirect(301, '/');
});

模板(从他们的github复制)

<div id="messages">
<% Object.keys(messages).forEach(function (type) { %>
  <ul class="<%= type %>">
  <% messages[type].forEach(function (message) { %>
    <li><%= message %></li>
  <% }) %>
  </ul>
<% }) %>
</div>

我如何渲染

<%- messages('msg_temp', locals) %>

现在我不确定出了什么问题,而且我已经尝试了我在这里找到的所有可能的解决办法,并通过谷歌,但它似乎并不想要工作

1 个答案:

答案 0 :(得分:0)

您需要使用错误/成功等密钥设置消息

<%= f.date_field :ends_from, as: :date, value: f.object.try(:strftime,"%d/%m/%Y") %>

你可以在res.locals中获得相同的密钥,或者可以在视图上呈现时说出

req.flash('success', "hello flash");

注意: 会话cookie中的flash存储密钥,消息只刷新一次