web-dev-qa-db-fra.com

Comment obtenir le contrôleur cible de l'action et l'action avec Rails 3?

Dans le contrôleur d'application avant le filtre.

class ApplicationController < ActionController::Base
  before_filter :authenticate

  def authenticate
    # How do we know which controller and action was targetted?
  end
end
44
randomguy
class ApplicationController < ActionController::Base
  before_filter :authenticate

  def authenticate
    # How do we know which controller and action was targetted?
    params[:controller]
    params[:action]
    # OR
    controller.controller_name
    controller.action_name    
  end
end
84
fl00r

Dans Rails 3.2, vous n'avez plus besoin d'appeler explicitement controller.action_name au lieu de simplement "action_name".

before_filter :check_if_locked


def check_if_locked
  puts action_name
  puts controller_name
end
15
Minimul

Vous pouvez obtenir un objet URL complet en utilisant

url = Rails.application.routes.recognize_path(request.env['PATH_INFO'])

maintenant, vous pouvez obtenir des composants

url[:controller]

url[:action]

Par défaut, vous pouvez également utiliser params[:controller] et params[:action] respectivement pendant le cycle de vie de la demande/réponse.

13
Nazar Hussain
request.parameters['controller']
request.parameters['action']
5
Moin Haidar