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>

私が達成したいのは、誰かが [編集] ボタンをクリックするたびに、その特定のモデル (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>

これにより、 param が特定のモデルの ID に設定されたHuman.editコントローラーが自動的に実行されます。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 に答える