如何将无效的表单字段返回到页面?

时间:2013-02-18 15:53:50

标签: node.js express

这是创建和编辑表单数据的经典案例。我有一个复杂的表单,假设要渲染所有字段以验证它,但不起作用。对于这种情况,我创建了一个简单的例子来说明我的担忧,并试图理解什么是在讨价还价。

在此示例应用正文解析器方法覆盖已启动:

app.use(express.bodyParser());
app.use(express.methodOverride());

现在我在 user.jade

中有一个简单的表单
doctype 5
html
    header
        title Add new user
    body
        h4 User - Add
        form(id='userForm', method='post', action='/user/save')
            label(for='name') Name
            input(type='text', id='name', name='name')
            label(for='address') Address
            input(type='text', id='address', name='address')
            input(type='submit', value='Save')

配置 GET POST HTTP方法:

app.get('/user/new', user.create); //create new user
app.post('/user/save', user.save); //save or edit user in validation process

最后“创建”“编辑/保存”功能:

exports.create = function(req, res) {
    res.render('user');
};

exports.save = function(req, res) {
    var name = req.body.name;
    var address = req.body.address;

    //do some validation
    //...

    //return it back to page to fix wrong fields
    res.render('user', { name: name, address: address });
};

为什么我将user.jade渲染回来,因此字段未填充?无法使用res.render填写页面表单? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

在user.jade中,您没有使用#{name}或#{address}

尝试这样的方法来访问本地变量

        input(type='text', id='name', name='name', value=#{name})