2016-11-28 7 views
0

をGET提出のフォームは、これは(ヒスイで)図であり、 :は、POSTメソッドは、これは私が今まで持っていた奇妙な問題である

<form method="POST"> 
       <fieldset class="form-group"><label for="name">Name:</label><input name="name" type="text" placeholder="Enter a name" value="independents" class="form-control"><small class="text-muted">Give your chatroom a meaningful name for people to refer to it.</small></fieldset> 
       <button type="submit" class="btn btn-primary">Save chatroom</button><a href="/admin/rooms" class="btn btn-default">Cancel  </a> 
      </form> 

i "は保存チャットルーム" ボタンを押したときに、私は、Webページ上でこのエラーメッセージが表示されます。

Cannot GET /admin/rooms/edit/ 

この急行ルータは、私が書いた

router.route('/rooms/edit/:id') 
.all(function(req, res, next) { 
    var roomid = req.params.id; 
    var room = _.find(rooms, r => r.id == roomid); 
    if (!room) { 
     res.sendStatus(404); 
     return; 
    } 
    res.locals.room = room; 
    next(); 
}).get(function(req, res) { 
    res.render('edit'); 
}).post(function(req, res) { 
    res.locals.room.name = req.body.name; 
    //res.redirect(req.baseUrl + '/rooms'); or we can also 
    res.redirect('./'); // but this is not good because if we had http://localhost:3000/admin/rooms/add/ it will take us to /add 
}); 

この小さな特急アプリのために全体のコード(2つのJSファイル)this previous questionに存在してフォームの送信にヘンデルことになっています。あなたのルートdefintionで

+1

'res.redirect( './');'にリダイレクトしたので、リダイレクトに続いてGET要求が行われます。あなたは何を期待しましたか? – Quentin

答えて

1

あなたは

if (!room) { 
    res.sendStatus(404); 
    return; 
} 

を持っており、それは、あなたがIDを持っているURLへのリクエストを送信していない、あなたのコード内でのように見えるので、あなたがそれを告げただけのように404を返すことです。

IDを持つURLを使用していない限り、このページのURLにはどのような表示がありますか?

+0

res.redirect( './');私は経路をデバッグし、evrythingはうまくいきましたので、問題がありました。私はres.redirect(req.baseUrl + '/ rooms')へのリダイレクトを変更しました。それは動作し、私は問題が起こった理由を知らない – Bardelman

関連する問題