Ruby on Rails 3.0.7を使用しており、パーシャルテンプレートを使用する予定です。アプリケーションのすべてのクラスが同じパーシャルを使用するため、決定する必要があります。それらすべてをどこに配置するか。
「グローバル」共有部分テンプレートをlib
フォルダーに配置することをお勧めしますか?いいえの場合、それらを配置するフォルダーを選択する一般的な方法は何ですか?そのフォルダに適切な名前を付けてロードする方法について何かアドバイスはありますか?
標準では、すべての共有パーシャルをapp/views/shared
に配置し、それらを次のように参照しています。
render :partial => 'shared/partial_name'
標準の「リスト内の行」パーシャルがある場合(たとえば、インデックスページの場合)、次のような共有パーシャルを使用できます。
# To render a single object row:
render :partial => 'shared/item', :locals => { :item => @item }
# Or to render them all:
render :partial => 'shared/item', :collection => @items
Rails 4:
アプリケーション全体で使用する予定のパーシャルを/app/views/application
に入れます
次に、アプリケーションのどこにいても簡単に次のことができます。
render partial: 'partial_name', variable_name: variable
追加の利点は、/app/views/controller_name/_partial_name.html.erb
でそのパーシャルの意味を再定義することにより、特定のビュースペースのパーシャルをいつでもオーバーライドできることです。パーシャルの呼び出しは、現在のより具体的なコンテキストを参照します。アプリケーションレベルを部分的に取得することはできません。
Thoughtbot からの提案
規則はそれらをapp/views/shared
の下に置くことです
多くのパーシャルを使用する場合は、アプリケーションにとって意味のあるものであれば、そのフォルダーのサブディレクトリに配置することをお勧めします。1つのディレクトリに多くのパーシャルを含めることは一般的に良い習慣ではないためです。