Sails JS - 显示flash消息并不适用于Heroku(生产),但在开发中工作正常

时间:2014-12-02 01:00:10

标签: javascript node.js heroku express sails.js

Flash消息仅在开发期间在我的本地计算机上运行...当我在Heroku上部署应用程序时,它不起作用。我一直试图找到答案但却无法找到解决问题的方法。

API /策略/ flash.js

module.exports = function(req, res, next) {
    res.locals.flash = {};
    if(!req.session.flash) return next();
    res.locals.flash = _.clone(req.session.flash);

    // clear flash
    req.session.flash = {};

    next();
};

api / controller / UserController.js(在创建操作中) - 成功提交表单后,重定向到主页并显示感谢信息。

res.redirect("/");
req.flash('signup-message', '<div class="thankyou-message-wrapper bg-success"><span class="glyphicon glyphicon-remove pull-right" aria-hidden="true"></span><span class="thankyou-message">Thank you for submitting the form!<br> Our administer will review your submission and publish soon.</span></div>');

view / main / index.ejs - 这是我从UserController.js呈现消息的方式

<%- req.flash('signup-message') %>

当我在Heroku上部署时,有没有人知道为什么flash消息没有出现?

1 个答案:

答案 0 :(得分:0)

您需要将该策略添加到routes.js文件以启用主页的策略。 例如:

 '/': {
      view: 'homepage', policy: 'flash'
 }

然后在您的UserController中,将您的消息添加到session.flash:

 req.session.flash = {
      message : '<div class="thankyou-message-wrapper bg-success"><span class="glyphicon glyphicon-remove pull-right" aria-hidden="true"></span><span class="thankyou-message">Thank you for submitting the form!<br> Our administer will review your submission and publish soon.</span></div>'
 }

最后,在主页中显示消息,首先检查消息是否存在,然后显示:

 <% if(flash && flash.message) { %>
      <%- flash.message %>
 <% } %>