Skip to content

Commit

Permalink
Implemented simple user editing
Browse files Browse the repository at this point in the history
  • Loading branch information
tj committed Aug 21, 2010
1 parent ce55275 commit f59ffbe
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 11 deletions.
6 changes: 5 additions & 1 deletion examples/mvc/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@

var express = require('../../lib/express');

var app = express.createServer();
var app = express.createServer(
express.logger({ format: ':method :url :status' }),
express.bodyDecoder(),
express.methodOverride()
);

// Allow ejs templates to utilize ".html" extensions
app.register('.html', require('ejs'));
Expand Down
42 changes: 34 additions & 8 deletions examples/mvc/controllers/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@
// Fake user database for example

var users = [
{ name: 'TJ', email: 'tj@vision-media.ca' },
{ name: 'Simon', email: 'simon@vision-media.ca' }
{ id: 0, name: 'TJ', email: 'tj@vision-media.ca' },
{ id: 1, name: 'Simon', email: 'simon@vision-media.ca' }
];

function get(id, fn) {
if (users[id]) {
fn(null, users[id]);
} else {
fn(new Error('User ' + id + ' does not exist'));
}
}

module.exports = {

// /users
Expand All @@ -17,12 +25,30 @@ module.exports = {
// /users/:id

show: function(req, res, next){
var id = req.params.id,
user = users[id];
if (user) {
get(req.params.id, function(err, user){
if (err) return next(err);
res.render(user);
} else {
next(new Error('User ' + id + ' does not exist'));
}
});
},

// /users/:id/edit

edit: function(req, res, next){
get(req.params.id, function(err, user){
if (err) return next(err);
res.render(user);
});
},

// PUT /users/:id

update: function(req, res, next){
var id = req.params.id;
get(id, function(err, user){
if (err) return next(err);
users[id] = req.body;
users[id].id = id;
res.redirect('back');
});
}
};
3 changes: 3 additions & 0 deletions examples/mvc/views/app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@ <h1>Application Index</h1>
<p>Try visiting one of the following urls:</p>
<ul>
<li><a href="/users">/users</a></li>
<li><a href="/users/1">/users/1</a></li>
<li><a href="/users/1/edit">/users/1/edit</a></li>
<li><a href="/users/5">/users/5 (non existent)</a></li>
</ul>
6 changes: 6 additions & 0 deletions examples/mvc/views/user/edit.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<h1>Editing user <%- user.name %></h1>
<form method="post" action="/users/<%- user.id %>">
<input type="hidden" name="_method" value="put" />
<input type="text" name="name", value="<%- user.name %>" />
<input type="submit" value="Update" />
</form>
2 changes: 1 addition & 1 deletion examples/mvc/views/user/index.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<h1>Users</h1>
<ul>
<% users.forEach(function(user){ %>
<li><%- user.name %></li>
<li><a href="/users/<%- user.id %>"><%- user.name %></a></li>
<% }) %>
</ul>
7 changes: 6 additions & 1 deletion examples/mvc/views/user/show.html
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
<h1>Viewing user <%- user.name %></h1>
<h1>Viewing user #<%- user.id %></h1>
<ul>
<li><%- user.name %></li>
<li><%- user.email %></li>
<li><a href="<%- user.id %>/edit">Edit</a> this user</li>
</ul>

0 comments on commit f59ffbe

Please sign in to comment.