2012-12-10 17 views
11

私はリダイレクト機能を使用すると、「メッセージ」を渡すことはできませんExpressでのres.render()とres.redirect()の適切な使い方は何ですか?

res.render('viewname', {msg: 'Message' }) 

res.redirect('route') 

間の曖昧さを解読するいくつかの問題を抱えているが、あなたはまだしたいこと、およびレンダリング機能はあなたのビューをレンダリングしますが、ウェブアプリケーションのURLは変更されず、ルートに必要な機能は起動しません。

私は、自分のURLを変更するアクションを持つInviteフォームを持っていて、そのルートで成功と失敗のコールバックを持つ関数をトリガしています。ダッシュボードに成功または失敗を示すメッセージが表示されます。

+2

にユーザーをリダイレクトしますPOSTとGETが定義されている。 POSTリクエストでは、GETにリダイレクトし、GETでレンダリングします。 – c0deNinja

答えて

18

メッセージのレールスタイルの点滅を使用するconnect-flashを見てください。

res.render()、渡されたデータとビューをレンダリングres.redirect()しますが、あなたがあなたをすべき記述しているものから、(リクエストが最初からやり直し、その時点で)別のページ

+1

素晴らしいです - ありがとうございます。これは、何かがExpressから削除された最初のものではありませんでした - 彼らはフラッシュmemとEJSの部分的なもののようなものを引き取っている理由を知らない – netpoetica

+1

私は別のライブラリが機能を提供すると思います。私はあなたが依存しているものを取り除くとき、それがイライラすることができるという点を除いて、ほとんどこの論理に同意します。私はejs-localsを使ってレイアウト/ブロック/部分的なものを取り戻します。 – chovy

+1

同時にリダイレクトしてデータを送信したい場合はどうすればいいですか? – stylishCoder

関連する問題