Sailsでres.redirect('/')
を使用してフラッシュメッセージを送信するにはどうすればよいですか?
コントローラーの状態を確認したら、フラッシュメッセージを渡して、別の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') %>
になります。
他の解決策は、リダイレクトされたテンプレートをレンダリングするルートでメッセージパラメータを渡すことです。
それでは、例を見てみましょう(少し変更しました):
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();
});
データを使用したリダイレクトに適していると思うのは、httpコードを307に設定することです。post/ put/deleteデータを使用してリダイレクトします。
req.flash('message');
res.redirect(307, '/');