0
votes

Comment déterminer quel contrôleur a été appelé à partir d'applicationsController?

Je voudrais mettre une méthode à l'intérieur de mon ApplicationController Code> et lancez-le uniquement au cas où des contrôleurs sont appelés. De même à Deviser Parameters Sanitizer:

before_action :recent_discussions, if: :first_controller? || :second_controller? || :third_controller?


0 commentaires

4 Réponses :


1
votes

Vous pouvez utiliser demande.referrer pour obtenir le chemin de l'action précédente.

Pour obtenir le contrôleur responsable de cette action, utilisez: rails.application.routes.recognize_path (demande.referrer) [: contrôleur]


0 commentaires

1
votes

Vous pouvez définir la méthode privée def my_controller?; fin dans applicationController et utiliser filtre avant_action: récent_discussions, si :: my_Controller?

Ensuite, dans les contrôleurs que vous souhaitez que ce code fonctionne réellement, redéfinissez def my_Controller?; vrai; fin


0 commentaires

2
votes

présumer que vous vouliez dire || code> au lieu de && code> dans le pseudo code de votre question ( && code> n'a aucun sens), cela fonctionnerait:

FANCY_CONTROLLERS = %w[FirstController SecondController ThirdController]
before_action :recent_discussions,
  if: proc { FANCY_CONTROLLERS.include? "#{controller_name.camelize}Controller" }


0 commentaires

2
votes

Mettez ceci dans votre contrôleur d'application xxx

et mettez ceci dans vos contrôleurs spéciaux xxx


0 commentaires