Как получить запрос целевого контроллера и действия с Rails 3?
В контроллере приложения перед фильтром.
class ApplicationController < ActionController::Base
before_filter :authenticate
def authenticate
# How do we know which controller and action was targetted?
end
end
Ответы
Ответ 1
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
Ответ 2
В Rails 3.2 вам больше не нужно вызывать control.action_name явно вместо "action_name".
before_filter :check_if_locked
def check_if_locked
puts action_name
puts controller_name
end
Ответ 3
Вы можете получить полный объект url, используя
url = Rails.application.routes.recognize_path(request.env['PATH_INFO'])
теперь вы можете получить компоненты как
url[:controller]
url[:action]
По умолчанию вы также можете использовать params[:controller]
и params[:action]
в течение жизненного цикла запроса/ответа.
Ответ 4
request.parameters['controller']
request.parameters['action']