2016-08-02 7 views
3

私はRails 5を使用しています。私は自分のプロジェクトで共有ファイルを使いたいと思います。私はこれについてウェブを検索しましたし、私は次のようにいくつかの結果を得た:RailsのためにRails 5に共有ビューファイルを追加する場所は?

app/views/shared 

Railsの4

app/views/application 

について何もRailsの5

のためにありませんでした

私は標準について話しています。他のフレームワークと同じように、Rails 5に共通のビューファイルを追加する特定の場所はありますか? Laravelのようにレイアウトフォルダがありますか?

+0

共有パーシャルフォルダの名前は標準ではなく、好み/コーディングスタイルの問題です。 – Geoffroy

答えて

5

一般的なビューファイルの「標準の場所」がないことを伝えるすべての人が正しいです。ただし、ビューにレンダリングしようとすると部分的なファイルを探す場所をRailsに尋ねる場合は、ビューファイルを取得してレンダリングして、存在しないことを分かります。

あなたがapp/view/usersのようなものを見て、あなたがそこに任意のビューに以下を追加し、ビュー構造で、たとえば、UsersControllerをお持ちの場合:

<%= render 'foo' %> 

あなたはおそらくのようなものを言うエラーが発生します:あなたはちょうどそれがRailsはそれ

を探します、任意のパス情報なしで名前だことにより、部分的にレンダリングしようとしたときにことを意味

Missing partial users/_foo, application/_foo 

この場合の電流コントローラのviewディレクトリの下にある最初の

  • users
  • applicationディレクトリ

下だから、私は、あなたが共通のための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 

:このメソッドのオーバーライドは、そうでないUsersControllerlocal_prefixesApplicationControllerから継承されますと、あなたは次のようになり、重複したルックアップ・パスで終わる、両方のコントローラーで起こるべきことを

注意あまりにも多くの努力/あまりにも奇妙な、他の人が指摘しているように、部分的にレンダリングするときに、共有部分ディレクトリを手動で指定することができます:

4

app/viewsディレクトリに新しいディレクトリを作成し、そのディレクトリに共有ファイルを追加することができます。 例:あなたは任意のビューで、この共有ビューを使用したい場合は、単に以下のコードを追加します今app/views/shared/_my_shared_view.html.erb

app/views/shared # Contains all shared/partial pages 

は、今のようなapp/views/sharedディレクトリ にあなたの部分的なページを作成します。

<%= render :partial => 'shared/my_shared_view' %> 

これだけです。これがあなたを助けることを願っています。

+0

あなたが使用している標準はRails 3ですが、Rails 5を使用しています.Rails 5では動作しませんが、正しい方法ではありません。 –

+0

ロードする共有テンプレートの種類? – hgsongra

+0

私は標準について話しています。つまり、Laravelのように他のフレームワークと同じように、共通のビューファイルをRails 5に追加する特定の場所はありますか? –

関連する問題