我不太确定如何说出这个标题。基本上我有一个ejs页面,显示表中的所有用户,每个用户都有一个编辑按钮,我可以通过user / user.id链接到该个人用户。但它显示为json。我想在另一个ejs文件中显示它,但我无法弄清楚如何通过按钮单击按钮上的user.id来显示我的控制器功能以显示单个用户页面。我不确定我在这里缺少什么我已经尝试了几件事并且用户不断返回undefined。这是我所拥有的,非常感谢任何帮助。我从下面删除了额外的代码。
Users.ejs
<td><a href="/systemuser"><button type="button">Edit</button></a></td>
Routes.js
'get /systemuser': 'UserController.systemuser'
UserController.js
systemuser: function(req, res) {
User.findById( req.param('id'))
.exec(function(err, user) {
res.view({user: user});
});
},
谢谢!
答案 0 :(得分:0)
您是否尝试使用URL参数将user.id传递给控制器操作? 这应该有效:
视图/用户/ list.ejs
<h2>User list</h2>
<table>
<% for (var i = 0; i < users.length; i++) {
var user = users[i]; %>
<tr><td><a href="/user/edit/<%= user.id %>">Edit</a></td></tr>
<% } %>
</table>
用户/ edit.ejs
<h2>Edit user</h2>
<form method="POST">
<input type="text" value="<%= user.name %>"/>
<!-- some fields -->
</form>
API /控制器/ UserController.js
list: function(req, res) {
User.find().exec(function(err, users){
res.view({ users: users });
});
},
edit: function(req, res) {
User.findOneById(req.param('id')).exec(function(err, user){
res.view({ user: user });
});
}
editSave: function(req, res) {
var user = req.params.all();
// save user data
res.redirect('/user/saved');
}
配置/ routes.js
'get /user/edit/:user_id': 'UserController.edit',
'post /user/edit/:user_id': 'UserController.editSave',
希望有所帮助。