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?
4 Réponses :
Vous pouvez utiliser Pour obtenir le contrôleur responsable de cette action, utilisez: demande.referrer code> pour obtenir le chemin de l'action précédente. p>
rails.application.routes.recognize_path (demande.referrer) [: contrôleur] code> p> p>
Vous pouvez définir la méthode privée Ensuite, dans les contrôleurs que vous souhaitez que ce code fonctionne réellement, redéfinissez def my_controller?; fin code> dans
applicationController code> et utiliser filtre
avant_action: récent_discussions, si :: my_Controller? Code> P> P>
def my_Controller?; vrai; fin code> p>
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" }
Mettez ceci dans votre contrôleur d'application et mettez ceci dans vos contrôleurs spéciaux p>