2011-03-24 16 views

Respuesta

70
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 
+7

+1. Me sorprende cuántas veces se hace esta pregunta. – Swanand

+1

Tengo un archivo listo con un montón de respuestas para preguntas estándar :) fl00r

+0

Me salvó hoy ^^ – Ratinahirana

12

Puede obtener el objeto URL completa usando

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

Ahora puede obtener componentes como

url[:controller]

url[:action]

Por defecto también se puede u se params[:controller] y params[:action] respectivamente durante el ciclo de vida de solicitud/respuesta.

+0

ciclo de petición/respuesta fuera práctico, pero absolutamente innecesario durante esto. – Swanand

+0

Este código es realmente útil para analizar una url almacenada en alguna variable de cadena. –

+0

Editado la respuesta para la forma de usar dentro del ciclo de solicitud/respuesta. –

13

En Rails 3.2 ya no es necesario llamar a controller.action_name explícitamente en lugar de simplemente "ACTION_NAME".

before_filter :check_if_locked 


def check_if_locked 
    puts action_name 
    puts controller_name 
end 
4
request.parameters['controller'] 
request.parameters['action'] 
Cuestiones relacionadas