将User.id从ejs文件传递给控制器​​函数

时间:2014-08-25 20:32:00

标签: sails.js

我不太确定如何说出这个标题。基本上我有一个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});
    });
  },

谢谢!

1 个答案:

答案 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',

希望有所帮助。