Ответ 1
Ваш код отлично выглядит для контроллера. По вашему мнению, вы можете получить доступ к флэш-сообщению как req.flash('message')
, поэтому в файле .ejs, например, это будет <%- req.flash('message') %>
Как отправить флеш-сообщение с помощью res.redirect('/')
в Sails?
Когда я проверяю какое-то условие в контроллере, я хочу перенаправить на другой URL-адрес, пропуская флеш-сообщение.
Я новичок в 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('/');
}
}
}
Спасибо заранее.
Ваш код отлично выглядит для контроллера. По вашему мнению, вы можете получить доступ к флэш-сообщению как req.flash('message')
, поэтому в файле .ejs, например, это будет <%- req.flash('message') %>
То, что я нахожу лучше для любой переадресации с данными, заключается в том, чтобы установить http-код на 307. Он будет перенаправляться с данными post/put/delete.
req.flash('message');
res.redirect(307, '/');
Другим решением было бы передать параметр сообщения на маршруте, на котором вы отображаете перенаправленный шаблон.
Итак, давайте рассмотрим ваш пример (слегка измененный):
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
});
});
Затем в вашем 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();
});