问题
In the application controller before filter.
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:
In Rails 3.2 you no longer need to call controller.action_name explicitly instead just "action_name".
before_filter :check_if_locked
def check_if_locked
puts action_name
puts controller_name
end
回答3:
You can get full url object using
url = Rails.application.routes.recognize_path(request.env['PATH_INFO'])
now you can get components as
url[:controller]
url[:action]
By default you can also use params[:controller]
and params[:action]
respectively during request/response life cycle.
回答4:
request.parameters['controller']
request.parameters['action']
来源:https://stackoverflow.com/questions/5418454/how-to-get-requests-target-controller-and-action-with-rails-3