Utilizo un diseño diferente para algunas acciones (principalmente para la nueva acción en la mayoría de los controladores).
Me pregunto cuál sería la mejor manera de especificar el diseño. (Estoy usando 3 o más diseños diferentes en el mismo controlador)
No me gusta usar
render: layout => 'nombre'
Me gustaba hacer
diseño 'nombre',: solo => [: nuevo]
Pero no puedo usar eso para especificar 2 o más diseños diferentes.
Por ejemplo:
Cuando llamo al diseño 2 veces en el mismo controlador, con diferentes nombres de diseño y diferentes opciones, la primera se ignora: esas acciones no se muestran en el diseño que especifiqué.
Nota: estoy usando Rails 2.
ruby-on-rails
mrbrdo
fuente
fuente
Respuestas:
Puede usar un método para establecer el diseño.
fuente
layout Proc.new{ ['index', 'new', 'create'].include?(action_name) ? 'some_layout' : 'other_layout' }
Si solo selecciona entre dos diseños, puede usar
:only
:o
fuente
(I am using 3 or more different layouts in the same controller)
. Esta respuesta permite un diseño y ningún diseño, no diseños diferentes.Puede especificar el diseño para una acción individual usando respond_to :
fuente
layout "[...]" to the controller class only allows one statement effectively. If you have more than two layouts to deal with (say, admin, generic_app, tailored_app), you will experience
Renderizar y / o redirigir se llamó varias veces en los errores de esta acción; y no tienes más remedio que usar esta sugerencia.format.html { render 'custom_index', layout: 'application' }
de la misma manera.También puede especificar el diseño para la acción usando render:
fuente
Hay una gema (layout_by_action) para eso :)
https://github.com/barelyknown/layout_by_action
fuente
Varias formas de especificar el diseño bajo el controlador:
En el siguiente código, el diseño de la aplicación_1 se llama bajo índice y muestra la acción del controlador de Usuarios y el diseño de la aplicación (diseño predeterminado) se llama para otras acciones.
En el siguiente código, se llama al diseño application_1 para todas las acciones del controlador de Usuarios.
En el siguiente código, el diseño de la aplicación_1 se llama solo para la acción de prueba de los controladores de Usuarios y para el resto del diseño de la aplicación de acción (predeterminado).
fuente
Precisión:
Lo que ves arriba es una forma SECA no realmente funcional pero funcional, pero con precisión: el diseño debe estar detrás de tus variables para trabajar ("@some"). Como :
Y no :
Si haces una before_action ... tampoco funcionará.
Espero eso ayude.
fuente