0

我在控制器中有 2 个动作,比如说我有一个Projects“控制器”和两个动作 :.all.my.

  • all操作将检索Project数据库中的所有记录并呈现视图以将它们显示在列表中。

  • my操作将执行相同的操作,但只会显示
    当前用户创建的那些项目。

如何在all我的操作中重用视图,而不必为操作复制视图my?如果我在操作中调用此代码my

        res.render('projects/all',
            projects : projects
        )

调用控制器中的all操作,覆盖我的projects数组。这在 Rails 中很常见,但在 NodeJS 中我不知道该怎么做。谢谢。

编辑:

这是我的操作代码(我同时放弃了,使用了两个单独的视图allmy相同的 HTML 生成代码:

exports.all = function(req, res) {
Project.all(req.db, function(err, projects) {

    var viewVars = {
        title: "All projects"
    };

    viewVars = req.db.paginate(req,
        viewVars
    );

    if(!err && projects != null)
    {
        viewVars.projects = projects;
        res.render('projects/all',
            viewVars
        )
    }
    else
    {
        viewVars.projects = [];
        viewVars.error_messages = ["No projects available"];
        res.render('projects/all',
            viewVars
        )
    }
});
};

exports.my = function(req, res) {
Project.findByCreator(req.db, req.session.user.uri, function(err, projects) {

    var viewVars = {
        //title: "My projects"
    };

    viewVars = req.db.paginate(req,
        viewVars
    );

    if(!err && projects != null)
    {
        viewVars.projects = projects;
        res.render('projects/my',
            viewVars
        )
    }
    else
    {
        viewVars.projects = [];
        viewVars.info_messages = ["You have not created any projects"];
        res.render('projects/my',
            viewVars
        );
    }
});
};
4

1 回答 1

1

改变你的路线...

就像是

app.get("/projects/:option(all|my)", yourcontroller);

然后你可以使用

req.params.option

告诉确定要加载哪些数据,并将该数据发送到您的一个新视图中。

于 2013-09-19T20:11:05.853 回答