2

さて、私が作成した2つの異なるスキャフォールドを使用した小さなプロジェクトがあります。そのためのlayoutsディレクトリには、2つの異なるlayout.html.erbファイルがあります。

私の質問は、これを2つのスキャフォールドビューが共有する1つのメインレイアウトファイルに凝縮する方法です。

基本的に、これを行う目的は、ナビゲーションバーやヘッダーなどをすべて1か所にまとめるだけでよいようにすることです。

4

2 に答える 2

5

レイアウトファイルにapplication.html.erbという名前を付けると、それがデフォルトのレイアウトファイルになります。コントローラと同じ名前でレイアウトファイルを指定すると、デフォルトのレイアウトが上書きされます。

Railsガイドから:

現在のレイアウトを見つけるために、Railsは最初にapp / views/layoutsでコントローラーと同じベース名のファイルを探します。たとえば、PhotosControllerクラスからのレンダリングアクションは、app / views / layouts / photos.html.erb(またはapp / views / layouts / photos.builder)を使用します。そのようなコントローラー固有のレイアウトがない場合、Railsはapp / views / layouts/application.html.erbまたはapp/views / layouts/application.builderを使用します。.erbレイアウトがない場合、Railsは.builderレイアウトを使用します(存在する場合)。Railsは、特定のレイアウトを個々のコントローラーとアクションにさらに正確に割り当てるためのいくつかの方法も提供します。

ソース: http: //guides.rails.info/layouts_and_rendering.html

編集:

アプリケーションコントローラでデフォルトとなる任意のレイアウトを指定できることを追加する必要があります。

class ApplicationController < ActionController::Base
  layout 'some_layout_name'
end

そして、それはrailsが自動的に行う名前の一致を上書きします。

これがお役に立てば幸いです。

于 2010-07-26T04:16:08.657 に答える
0

application.html.erbすべてのビューで共有されるレイアウトディレクトリにを含めることができます

于 2010-07-26T04:30:52.630 に答える