如何使用res.redirect('/')sails js发送flash消息

时间:2014-02-13 05:20:52

标签: node.js sails.js

如何在Sails中发送带有res.redirect('/')的Flash消息?

当我检查控制器中的某些条件时,我想重定向到另一个URL,传递一条flash消息。

我是Sails的新手,所以任何帮助都会受到赞赏。

控制器操作:

module.exports ={
   index: function (req, res) {

    if(req.param('key')){
      req.flash('message', 'welcome key is present');
      res.redirect('/view/');
    } else {
      req.flash('message', 'welcome key is not present');
      res.redirect('/');
    }

  }
}

提前致谢。

3 个答案:

答案 0 :(得分:17)

您的代码看起来很适合控制器。在您的视图中,您可以req.flash('message')访问Flash消息,因此在.ejs文件中,例如<%- req.flash('message') %>

答案 1 :(得分:1)

对于任何带数据的重定向,我发现更好的方法是将http代码设置为307.它将使用post / put / delete数据重定向。

req.flash('message');
res.redirect(307, '/');

答案 2 :(得分:1)

另一种解决方案是在呈现重定向模板的路由中传递message参数。

所以让我们举个例子(稍加修改):

module.exports ={
   index: function (req, res) {

    if(req.param('key')){
      req.flash('info', 'welcome key is present' );
      res.redirect('/view/');
    } else {
      req.flash('info', 'welcome key is not present');
      res.redirect('/');
    }

  }
}

然后在'view'的路线中,你会有这样的事情:

app.get('/view', function(req, res){
    var messages = {};
    if (typeof res.locals.messages.info != 'undefined'){
        messages = res.locals.messages.info;
    }
    res.render('view.ejs', {
        messages: messages
    });
});

然后在你的view.ejs:

<% if (typeof messages != 'undefined' && messages.length > 0) { %>
            <% for (var i in messages) { %>
                <div class="alert alert-info">
                    <%= messages[i] %>
                </div>
            <% } %>
<% } %>

同样在您的主server.js文件中:

app.use(function(req, res, next) {
    res.locals.messages = req.flash();
});