2011-07-01 9 views
42

Ruby on Rails 3.0.7を使用していますが、部分テンプレートを使用する予定です。私のアプリケーションのすべてのクラスは同じパーシャルを使用するので、すべてのクラスを配置する場所を決めなければなりません。「グローバル」共有部分テンプレートをどのフォルダに入れる必要がありますか?

"グローバル"共有部分テンプレートをlibフォルダに入れることをお勧めしますか?そうでない場合は、フォルダをどこに置くのが一般的なのですか?そのフォルダに適切な名前を付けてロードする方法についてのアドバイスはありますか?

答えて

53

あなたは「リストの行」標準を持っている場合は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 
+4

から取られたこれはまだRailsの4のために正確ですか? –

+0

@JamesMcMahonはい、レール4で動作します。 – jlhonora

+0

レール5は何ですか?、レール5には良い方法がありますか?同じものを使用する –

4

表記app/views/shared

の下に置くことで、私はあなたをお勧めします1つのディレクトリに多くの部分文字列を置くのは一般的には良いことではないため、アプリケーションに意味を持たせるものであれば、そのフォルダのサブディレクトリに置くことができます。

15

Railsの4:

はどこでもあなたのアプリケーションでは、あなたが簡単にできる、あなたが/app/views/application

でアプリケーション全体を通して使用するパーシャルを置く:

render partial: 'partial_name', variable_name: variable 

を追加利点があります特定のビュー空間で部分的に何を意味するかを再定義することによって部分的な部分をいつでもオーバーライドすることができます。より具体的なコンテキストが存在します。存在しない場合は、アプリケーションレベルの一部を取得します。

提案がThoughtbot

+0

名前空間コントローラを使用する場合、これは機能しません。次に、ファイルが 'app/views/NAMESPACE/application'の下に置かれ、名前空間以外へのフォールバックはありません。 –

+0

2番目の評価では、この問題は、仕様を実行しているときにのみ発生しますが、アプリケーションを使用しているときには発生しません。 –

関連する問題