0

これは、フォーム データを作成および編集する典型的なケースです。すべてのフィールドをレンダリングして検証することを想定している複雑なフォームを取得しましたが、機能しません。この場合、私の懸念を説明し、何が起こっているのかを理解しようとする簡単な例を作成しました。

このサンプル アプリでは、ボディ パーサーメソッド オーバーライドが有効になっています。

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 を使用してページ フォームを埋めることはできませんか? 前もって感謝します!

4

1 に答える 1

0

user.jadeでは、#{name}または#{address}を使用していません

このようなものを試して、ローカル変数にアクセスしてください

        input(type='text', id='name', name='name', value=#{name})
于 2013-02-18T17:57:23.927 に答える