res.view()
HTMLページで応答します。
return res.view(pathToView, locals);
または
return res.view(pathToView);
return res.view(locals);
return res.view();
設定されたビューエンジンを使用して、pathToView
にあるビューテンプレートをHTMLにコンパイルします。pathToView
が指定されていない場合、現在のコントローラーとアクションに基づいて慣例的なビューを提供します。
指定されたlocals
は、設定されたアプリ全体で使用できるローカル変数と、Sailsやビューエンジンからの特定の組み込みローカル変数とマージされ、データとしてビューエンジンに渡されます。
引数 | 型 | 詳細 | |
---|---|---|---|
1 | pathToView | アプリのviews フォルダー(通常はviews/ )からの相対パスで、ファイル拡張子(例:.ejs )や末尾のスラッシュを含まない、目的のビューファイルへのパス。デフォルトは"コントローラーの識別子/アクション名"になります。 |
|
2 | locals | ビューテンプレートに渡すデータ。これらの明示的に指定されたローカル変数は、Sailsの組み込みローカル変数と、設定されたアプリ全体で使用できるローカル変数にマージされます。 デフォルトは {} です。 |
OvenController.js
のcook()
アクションでres.view()
を呼び出す、慣例的に構成されたSailsアプリを考えてみましょう。
pathToView
引数がない場合、res.view()
はコントローラーの識別子(oven
)とアクション名(cook
)を組み合わせてパスを決定します。
return res.view();
// -> responds with `views/oven/cook.ejs`
明示的なpathToView
を使用して同じビューをロードする方法は次のとおりです。
return res.view('oven/cook');
// -> responds with `views/oven/cook.ejs`
最後に、res.view
をWaterlineクエリと組み合わせて使用する方法を示す、より複雑な例を以下に示します。
// Find the 5 hottest oven brands on the market
Oven.find().sort('heat ASC').exec(function (err, ovens){
if (err) return res.serverError(err);
return res.view('oven/top5', {
hottestOvens: ovens
});
// -> responds using the view at `views/oven/top5.ejs`,
// and with the oven data we looked up as view locals.
//
// e.g. in the view, we might have something like:
// ...
// <% _.each(hottestOvens, function (aHotOven) { %>
// <li><%= aHotOven.name %></li>
// <% }) %>
// ...
});
- このメソッドは**ターミナル**です。つまり、通常、特定のリクエストに対してアプリが実行するコードの最後の行です(したがって、これらのドキュメント全体で
return
の使用を推奨しています)。res.view()
はディスクからビューファイルを読み取り、HTMLにコンパイルしてから、クライアントにストリーミングで返します。既にメモリにビューがある場合、またはコンパイルされたHTMLを直接クライアントにストリーミングで返したくない場合は、代わりにsails.hooks.views.render()
を使用してください。res.view()
は常にビューファイル名の*小文字*バージョンを探します。たとえば、コントローラーがFooBarController
で、アクションがBaz
の場合、res.view()
はviews/foobar/baz.ejs
を見つけようとします。*大文字と小文字を区別する*ファイルシステム(例:Ubuntu Linux)では、ビューが大文字で保存されている場合、ビューの検索時に予期しないエラーが発生する可能性があります。このため、ビューとビューフォルダーは常に小文字で保存することをお勧めします。