J'ai besoin d'un message pour avoir une disposition différente dans le projet, est-il possible dans des rails de faire quelque chose comme ça? Merci P> P>
7 Réponses :
Décidez la mise en page dans le contrôleur plutôt que le modèle. Votre projetController peut utiliser son propre projetLayout et MessagesController peut ensuite utiliser la mise en page normale si vous le souhaitez. P>
Vous ne pouvez appliquer que des mises en page au niveau du contrôleur: Méthode de mise en page Documentation a un exemple sur la manière de faire des mises en page conditionnelle p> p>
En outre, puisque la question n'est pas claire, vous pouvez également définir la mise en page pour une seule action avec l'option de rendu.
render :action => 'new', :layout => 'layoutname'
Ceci peut vous aider
class MessagesController < ApplicationController
layout :get_layout
def get_layout
@project? ? 'ProjectLayout' : 'NormalLayout'
end
end
Vous ne pouvez appliquer que les mises en page des rails sur Disposition unique dans pour chaque contrôleur strong> p> ** ** La ligne ci-dessus Disposition dynamique pour chaque contrôleur strong> P> contrôleur code> action et individuel> action code> niveaux code>. Layout "admin" code> chargera la disposition de l'administrateur chaque fois que le contrôleur de message est invoqué. Pour cela, vous devez avoir une mise en page créée dans votre fichier mises en page / admin.html.rb code>. ** p> 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
Mes deux cents dans ApplicationController:
Vous pouvez utiliser un PROC :
layout -> {
if something?
'my-layout'
else
'my-other-layout'
end
}