多くの異なるモデルの構築を担当する RESTful コントローラーがあります。これは、特定のビューが正しくレンダリングされる前に、いくつかの変数を設定する必要があることを意味します。コントローラーでこれらの変数を設定すると、そのビューをレンダリングする可能性のあるさまざまなアクション間でコードを複製する必要があります。たとえば、ページ 1 のレンダリングには 5 つの変数が必要です。表示、作成、および更新のすべてがそのビューをレンダリングする場合、これらの 5 つの変数を設定するコードは、それらのコントローラー アクション間で複製されます。別の方法は、すべてのコードをビュー内に配置することです。しかし、それは本当に醜いものになる可能性があります:
<% variable1 = Model1.where(some conditions) %>
<% variable2 = Model2.where(some other conditions) %>
<% variable3 = Model3.where(some third conditions) %>
ビューに入るコードの量が多いため、このソリューションについては躊躇しています。私は常に、ビュー内のコードがデータベースに触れてはならないという原則に従ってきました。私が楽しみにしているもう 1 つの方法は、変数の設定とビューのレンダリングに焦点を当てたプライベート メソッドを作成することです。このメソッドは、レンダリングが必要なすべてのアクションから呼び出すことができます。