我正在使用带有ejs引擎的sailsJS,我想将用户重定向到带有消息的输入页面(验证错误......)。 我过去常常在PHP中使用laravel(返回重定向('仪表板') - > with('status','Profile updated!');)
即:我需要重新定向用户,说该网站不存在
find : function(req,res){
var id = req.param(íd');
Site.find(id).where({isDeleted : null })
.exec(function(err,siteFound){
if(err) console.log(err);
if(siteFound) {
return res.view('site/show', {
site : siteFound
});
} else {
return res.redirect('/site');
}
})
},
我搜索了sails文档,但一无所获。如何在SailsJS中执行此操作?
感谢
更新:我通过安装sails-hook-flash
找到了我需要的东西。我需要的功能称为flash messages
。
谢谢你的帮助!
块引用
答案 0 :(得分:1)
我无法确定您是否需要真正的浏览器重定向。浏览器重定向意味着向浏览器发送一条消息,说明“使用此其他网址”,然后从您的应用获取新数据(意味着新的req
和res
对象)。如果这是你想要的,我会说传递数据的唯一真正选项是查询字符串,例如:
return res.redirect('/site?message=notfound');
然后,在您的网站接收控制器操作中,您可以通过req.param('message')
。
但是,如果您只想在不让浏览器重定向的情况下返回适当的现在内容,您可以调用您喜欢的任何视图或控制器操作:
if(siteFound) {
return res.view('site/show', {
site : siteFound
});
} else {
// uncomment one of the options:
// ONE: return another view
// return res.view('site/notfound, {requested: id});
// TWO: pass to another controller action in same controller
// req.options.message = 'not found';
// return module.exports.someOtherAction(req, res);
// THREE: pass to a controller action in another controller
// req.options.message = 'not found';
// var OtherController = require('./OtherController');
// return OtherController.someOtherAction(req, res);
}
这三个选项中的任何一个都会让您看到用户请求的网址(“/ site / abc123”或其他),但会显示您指定的内容。
答案 1 :(得分:0)