1

我有一个简单的模型如下:

module.exports = {

    attributes: {

        firstName: 'STRING',
        lastName: 'STRING',
        contact: 'STRING',
        email: 'STRING'

    }

};

我已经有一个显示所有人类的索引操作。这是对应的视图:

<h1>List of all humans</h1>

<ul>
<% _.each(humans, function(model) { %>
<li><%= model.firstName %> /// <%= model.lastName %> /// <%= model.contact %> ///     <%= model.email %> <a href="/human/edit"><button id="<%=model.firstName %>"type="button">Edit</button> </a></li> 
<% }) %>
</ul>

我想要完成的是,每次有人单击 EDIT 按钮时,都会显示一个包含该特定模型的所有信息的视图(localhost:1337/human/edit/:id)。如何编写我的控制器?如何告诉我的控制器我希望显示该特定模型并正确路由它?

谢谢!

4

1 回答 1

0

您应该将浏览器指向localhost:1337/human/edit/:idurl,其中 :id 是您特定型号的id. 例如

<ul>
<% _.each(humans, function(model) { %>
  <li><%= model.firstName %> <a href="/human/edit/<%= model.id %>"><button id="<%=model.firstName %>" type="button">Edit</button> </a>
  </li> 
<% }) %>
</ul>

这将自动执行Human.edit控制器,并将id参数设置为特定模型的 id。您不必编写任何自定义路由,这是默认行为。

人工/编辑控制器操作示例:

edit: function(req, res) {
  Human.findById( req.param('id') )
    .done(function(err, human) {
      if (err) {
        return res.send(err, 500);
      } else {
        if (human.length) {
          res.json(human[0]);
        } else {
          res.send('Human not found', 500);
        }
      }
    });
}

在这里,为了简单起见,我返回编码为 json 的模型作为响应,但您可以使用您的视图。

此外,firstName属性不是用作按钮id属性的最佳值,因为它应该是唯一的。

于 2013-08-19T17:10:39.867 回答