Sails.js - 创建视图以编辑模型

时间:2013-08-19 08:54:29

标签: javascript node.js sails.js

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

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)。我该怎么写我的控制器?如何告诉控制器我希望显示特定型号并正确布线?

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该将浏览器指向localhost:1337/human/edit/:id网址,其中: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 param设置为特定模型的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属性的最佳值,因为它应该是唯一的。