一般的なビューファイルの「標準の場所」がないことを伝えるすべての人が正しいです。ただし、ビューにレンダリングしようとすると部分的なファイルを探す場所をRailsに尋ねる場合は、ビューファイルを取得してレンダリングして、存在しないことを分かります。
あなたがapp/view/users
のようなものを見て、あなたがそこに任意のビューに以下を追加し、ビュー構造で、たとえば、UsersController
をお持ちの場合:
<%= render 'foo' %>
あなたはおそらくのようなものを言うエラーが発生します:あなたはちょうどそれがRailsはそれ
を探します、任意のパス情報なしで名前だことにより、部分的にレンダリングしようとしたときにことを意味
Missing partial users/_foo, application/_foo
この場合の電流コントローラのviewディレクトリの下にある最初の
下だから、私は、あなたが共通のためのRailsの「デフォルトの場所」と言うことができると思いますビューファイルはapplication
ディレクトリにあります。
それはRailsの内のすべてのコントローラにして混入しActionView::ViewPaths.local_prefixes
プライベートクラスメソッドオーバーライドすることにより、共通のビューファイル用のアプリ独自の「標準的な場所」を作成するために、これに追加することが可能です:今
class ApplicationController < ActionController::Base
def self.local_prefixes
['shared', controller_path]
end
private_class_method :local_prefixes
end
class UsersController < ApplicationController
def self.local_prefixes
[controller_path]
end
private_class_method :local_prefixes
end
をそれはapplication
ディレクトリに見て行く前に、Railsは、同様パーシャルためshared
ディレクトリをチェックすることを示して
Missing partial users/_foo, shared/_foo, application/_foo
:あなたのエラーは次のように言うだろう。このすべてがある場合
shared/_foo, users/_foo, shared/_foo, application/_foo
:このメソッドのオーバーライドは、そうでないUsersController
でlocal_prefixes
がApplicationController
から継承されますと、あなたは次のようになり、重複したルックアップ・パスで終わる、両方のコントローラーで起こるべきことを
注意あまりにも多くの努力/あまりにも奇妙な、他の人が指摘しているように、部分的にレンダリングするときに、共有部分ディレクトリを手動で指定することができます:
共有パーシャルフォルダの名前は標準ではなく、好み/コーディングスタイルの問題です。 – Geoffroy