【问题标题】:SailsJS : Redirecting to controller action with variablesSailsJS:使用变量重定向到控制器动作
【发布时间】:2017-11-28 11:09:11
【问题描述】:

我正在使用带有 ejs 引擎的sailsJS,我想将用户重定向回带有消息的输入页面(验证错误......)。 我曾经在 PHP 中使用 laravel 轻松使用它(return redirect('dashboard')->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。 感谢您的帮助!

块引用

【问题讨论】:

  • 您想在sails 视图/ejs 模板中使用status 变量吗?
  • 我希望能够传递我将在重定向视图中显示的自定义消息

标签: node.js sails.js ejs


【解决方案1】:

我无法确定您是否需要真正的浏览器重定向。浏览器重定向意味着向浏览器发送一条消息,上面写着“改用这个其他 url”,然后它会从您的应用程序中获取新数据(即新的 reqres 对象)。如果这是您想要的,我想说传递数据的唯一真正选择是查询字符串,例如:

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”或其他),但会显示您指定的内容。

【讨论】:

    【解决方案2】:

    res.notfound("my message string"); 应该这样做对吗? 如果它是一个期望自定义响应的 ajax 请求,您可以使用 res.json()。 阅读有关res 对象HERE 和自定义notfound 响应HERE 的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 2016-10-06
      • 2016-09-23
      • 1970-01-01
      相关资源
      最近更新 更多