2012-07-03 6 views
16

Ich habe einen Heimcontroller und einen News-Controller. Ich möchte, dass beide Controller die Layoutdatei application.html.erb verwenden und zusätzlich zu Hause das Home-Layout und die News verwenden und das Nachrichtenlayout verwenden. und dann eine bestimmte Ansicht wiedergeben. Ist das in Schienen möglich?Schienenlayout pro Controller

Mit anderen Worten, ich möchte kein Layout pro Ansicht angeben, sondern pro Controller, beide erben von application.html.erb Layout.

Was ich tun möchte, ist die Redundanz des Hinzufügens der oberen Navigationsleiste und einschließlich Javascript/CSS in jeder einzelnen Layout-Datei entfernen. Ich würde das lieber in eine Datei aufnehmen und ein Controller-spezifisches Layout mit einem anderen Layout erstellen und dann die Ansicht schließlich rendern.

Dank

+0

10 Ich denke, Sie können nur entfernen Sie die home.html.erb & news.html.erb Dateien aus dem Layouts-Verzeichnis & application.html.erb wird verwendet standardmäßig. Ich glaube, Sie leiden unter einem der negativen Aspekte der Verwendung von Rails-Scaffolding (erzeugt standardmäßig die Layout-Dateien). – Brian

Antwort

31

Sie einem Controller kann sagen, ein bestimmtes Layout zu verwenden, zB

class HomeController < ApplicationController 
    layout 'home' 
end 

class NewsController < ApplicationController 
    layout 'news' 
end 

Diese werden die Layouts in app/views/layout/home.html.erb etc

+0

Ja, aber ich möchte, dass das Anwendungslayout verwendet wird, dann das Inventarlayout erstellt wird und anschließend eine bestimmte Ansicht gerendert wird. – 0xSina

Verwandte Themen