2011-06-17 3 views
3

dans mon ApplicationController je veux faire quelque chose comme ceci:Déterminer le contrôleur a demandé à - ApplicationController

def layout_by_resource 
    if user_signed_in? || request.controller == 'ChatRoom' 
     "application" 
    else 
     "unauthorized" 
    end 
    end 

Est-ce le request.controller == 'ChatRoom' partie possible? Je souhaite utiliser une disposition spécifique basée sur le contrôleur appelé par l'utilisateur.

Merci

Répondre

4

Bien sûr, vous pouvez simplement remplacer request.controller == 'ChatRoom' avec params[:controller] == 'ChatRoom'

Autre solution:

request.filtered_parameters["controller"] == 'ChatRoom' 
+0

Merci, mais cela me donne: 'variable locale définie ou méthode 'params' pour ApplicationController: Class' – AnApprentice

+0

qui est vraiment bizarre votre ApplicationController ne pouvait pas lire vos params – apneadiving

+0

Il semble comme vous appelez 'params' au mauvais endroit. En outre, vous allez obtenir la version de soulignement du nom du contrôleur. J'ai posté du code dans une réponse, mais donne un crédit apneadiving. –

1

Je pense que vous pouvez le faire au niveau du contrôleur.

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

ApplicationController:

layout :layout_by_resource 

def layout_by_resource 
    if user_signed_in? || params[:controller] == 'chat_room' 
     "application" 
    else 
     "unauthorized" 
    end 
end 
+0

+1 pour vos précieux commentaires – apneadiving

Questions connexes