2014-02-13 32 views
11

如何在Sails中使用res.redirect('/')發送Flash消息?如何使用res.redirect('/')發送閃光消息js

當我檢查控制器中的一些條件,然後我想重定向到另一個URL,傳遞一個flash消息。

我是新來的帆,所以任何幫助將不勝感激。

控制器動作:

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('/'); 
    } 

    } 
} 

在此先感謝。

回答

17

你的代碼對於控制器看起來很好。在您看來,您可以訪問閃存消息req.flash('message'),所以在例如一個.ejs文件時,它會<%- req.flash('message') %>

+1

抱歉。我不知道,如果我曾經控制檯登錄閃光燈,那麼它也清楚它的價值。 – Lucifer

+0

感謝您的回覆 – Lucifer

+0

這也讓我感到困惑。我一直把它放回到控制檯裏......呃! – Gor

1

我發現了什麼對任何與數據好重定向,是對HTTP代碼將其設置爲307。」將會重定向post/put/delete數據。

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

另一種解決方案是在渲染重定向模板的路由中傳遞消息參數。

因此,讓你的榜樣(略有修改):

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('/'); 
    } 

    } 
} 

然後在「觀看」的路線,你就會有這樣的事情:

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 
    }); 
}); 

然後在您的視圖。 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(); 
}); 
+0

爲什麼這是downvoted? –