2009-08-13 14 views

Antwort

0

das Layout in der Steuerung Entscheiden eher dann das Modell. Ihr ProjectsController kann sein eigenes ProjectLayout verwenden und MessagesController kann dann das normale Layout verwenden, wenn Sie möchten.

2

können Sie nur anwenden Layouts auf Controller-Ebene:

class MessagesController < ApplicationController 
    layout :project 
end 

Layout method documentation ein Beispiel darauf hat, wie bedingte Layouts

2

auch zu tun, da die Frage unklar ist, können Sie auch das Layout-Set für nur eine Aktion mit der Renderoption.

render :action => 'new', :layout => 'layoutname' 
16

dies kann Ihnen nur helfen

class MessagesController < ApplicationController 
    layout :get_layout 

    def get_layout 
    @project? ? 'ProjectLayout' : 'NormalLayout' 
    end 

end 
1

Sie die Schienen-Layouts auf controller Ebene und individuelle action Ebenen anwenden können.

Einzigartiges Layout in für jeden Controller

class MessagesController < ApplicationController 
    layout "admin" 

    def index 
    # logic 
    end 
end 

** Die obige Linie layout "admin" wird das Admin-Layout jedes Mal der Meldung Controller wird aufgerufen laden. Dafür müssen Sie ein Layout in Ihrer layouts/admin.html.rb Datei erstellt haben. **

Dynamisches Layout für jeden Controller

class MessagesController < ApplicationController 
    layout :dynamic_layout 

    def index 
    # logic 
    end 

protected 
def dynamic_layout 
    if current_user.admin? 
     "admin"  # Show admin layout 
    else 
    "other_layout" # Show other_layout 
    end 
    end 
end 

# Einzelne Qualitätsstufe Layouts Wenn Sie verschiedene Layouts für anzeigen möchten Mit jeder Aktion kannst du das tun.

class MessagesController < ApplicationController 
    layout :dynamic_layout 

    def index 
    # logic 
    render :action => 'index', :layout => 'index_layout' 
    end 

    def show 
    # logic 
    render :action => 'show', :layout => 'show_layout' 
    end 
end 
0

Meine zwei Cent in Application:

before_action :layout_by_action 

@@actions = %w(new edit create update index) 

def layout_by_action 
    if @@actions.include? params[:action] 
    self.class.layout 'admin' 
    else 
    self.class.layout 'application' 
    end 
end 
Verwandte Themen