2010-01-20 14 views
16

folder Moje app/views/układy wygląda następująco:ustawić układ dla określonych działań?

application.html.erb 
user_sessions.html.erb 
errors.html.erb 

Działają one w porządku i nie mam żadnych problemów z nimi, ale id teraz chce dodać nowy układ na napiwki, ale tylko na indeks i pokazać działania .

Czy "tips.index.html.erb" zadziała?

Odpowiedz

32

Dodaj nowy układ jak lubisz zwany „tips.html.erb”

W regulatorze wskazówki dodać następujące:

layout "tips", :only => [ :index, :show ] 

Można określić układ dla danego działania, używając:

def new 
    render(:layout => "layouts/application") 
end 

Nigdy nie próbowałem używać wielu deklaracji układu w kontrolerze. Może się okazać, że dodanie kolejnego

layout "standard", :only => [ :new, :edit ] 

może działać ...

+0

pomocą nowego zastosowania/edytować plik nie układ. – Arcath

+0

Mam zaktualizowaną odpowiedź - mam nadzieję, że działa! – dtt101

+0

Warto wspomnieć, że nie można _nie_ wywołać 'layout' wiele razy w kontrolerze , ponieważ oceniane będzie tylko ostatnie połączenie. Zamiast tego (na szynach 4 na najniższym poziomie ) można wywołać "layout" przekazując symbol metody. Metoda może następnie dynamicznie zwracać różne nazwy szablonów. Zobacz [layout] (http://api.rubyonrails.org/classes/AbstractController/Layouts/ClassMethods.html#method-i-layout). –

4

Jeśli chcesz korzystać z wielu w układ kontrolera, należy użyć poniższy kod: (ACTION_NAME jest predefiniowaną zmienną, której można użyć bezpośrednio w Rails)

class OrdersController < BaseController 
    layout :determine_layout 

private 
    def determine_layout 
    %w(new).include?(action_name) ? "some_layout" : "public" 
    end 
end 

zobaczyć: https://stackoverflow.com/a/5525014/445908

Powiązane problemy