1 votes

Plus d'une disposition pour un contrôleur

Est-il possible de faire quelque chose comme ceci :

class SimulationController < ApplicationController
  layout "generic", :only => [:login, :invalid]
  layout "menubar", :except => [:login, :invalid]

Pour une raison quelconque, mon login utilise toujours la disposition de la barre de menu (je peux le dire car une barre de menu apparaît en haut). Si je commente la troisième ligne, la barre de menu disparaît. Il semble donc que les deux mises en page soient appliquées l'une après l'autre.

Mais si je commente le layout "generic" Je veux qu'il soit simplement en noir et blanc, ce qui signifie qu'aucune feuille de style CSS n'est appliquée.

4voto

OtisAardvark Points 106

On dirait que vous essayez d'appliquer différentes mises en page dans différentes conditions d'exécution. La façon la plus simple d'aborder ce problème est d'utiliser une référence de méthode pour la mise en page.

Par exemple : -

class ResourceController < ActionController::Base
  layout :choose_layout

  private
    def choose_layout    
      if [ 'signup', 'login' ].include? action_name
        'login_layout'
      else
        'admin_layout'
      end
    end

Découvrez les Rails Référence API pour ActionController::Layout sous la rubrique "Types de mise en page".

1voto

Srividya Sharma Points 602

Jetez un œil à ce billet, votre problème semble être similaire : [ http://dev.rubyonrails.org/ticket/8867 ]

0voto

Toby Hede Points 22128

L'un des moyens d'y parvenir est de le faire dans le cadre de vos actions.

def login
  render :action => "login", :layout => "generic"
end

Vous pourriez également faire du html de la "menubar" un partial et désactiver le rendu dans certaines conditions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X