24

ホームコントローラーとニュースコントローラーがあります。これらのコントローラーの両方で application.html.erb レイアウト ファイルを使用し、それに加えて、ホームにはホーム レイアウトを使用し、ニュースにはニュース レイアウトを使用します。次に、特定のビューをレンダリングします。これはレールで可能ですか?

つまり、ビューごとにレイアウトを指定するのではなく、コントローラーごとに指定したいと思います。どちらも application.html.erb レイアウトから継承しています。

私がやりたいことは、トップ ナビゲーション バーを追加し、すべてのレイアウト ファイルに javascript/css を含めるという冗長性を取り除くことです。それを 1 つのファイルに含めて、コントローラー固有のレイアウトを別のレイアウトで行い、最後にビューをレンダリングします。

ありがとう

4

2 に答える 2

45

コントローラーに特定のレイアウトを使用するように指示できます。

class HomeController < ApplicationController
  layout 'home'
end

class NewsController < ApplicationController
  layout 'news'
end

これらは app/views/layouts/home.html.erb などのレイアウトを期待します

于 2012-07-03T00:31:43.403 に答える
12
class ProductsController < ApplicationController
  layout "inventory"
  #...
end

http://guides.rubyonrails.org/layouts_and_rendering.html

于 2012-07-03T00:32:34.577 に答える