2010-01-20 10 views
16

Mi carpeta app/views/layouts se parece a esto:establece un diseño para ciertas acciones?

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

Estos funcionan bien y no tengo problemas con ellos, pero Identificación Ahora, como añadir un nuevo diseño para las extremidades, pero sólo en el índice y mostrar acciones .

¿Funcionaría "tips.index.html.erb"?

Respuesta

32

Añadir un nuevo diseño que te gusta llamado 'tips.html.erb'

En el controlador consejos agregar lo siguiente:

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

puede especificar el diseño de una acción específica usando:

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

Nunca he intentado utilizar múltiples declaraciones de diseño en un controlador. Puede ser que la adición de otro

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

podría funcionar ...

+0

utilizando el nuevo/editar su uso sin archivo de diseño. – Arcath

+0

He actualizado mi respuesta: ¡espero que funcione! – dtt101

+0

Vale la pena mencionar que no se puede llamar a 'layout' varias veces en el controlador , ya que solo se evaluará la última llamada. En su lugar (en rails 4 en least), puede llamar a 'layout' pasando el símbolo de un método. El método puede entonces devolver dinámicamente diferentes nombres de plantilla. Ver [layout] (http://api.rubyonrails.org/classes/AbstractController/Layouts/ClassMethods.html#method-i-layout). –

4

Si desea utilizar el diseño múltiple en un controlador, utilice el código de abajo: (ACTION_NAME es una variable predefinida que se puede utilizar directamente en Rails)

class OrdersController < BaseController 
    layout :determine_layout 

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

véase: https://stackoverflow.com/a/5525014/445908

Cuestiones relacionadas