Как получить целевой контроллер запроса и действие с Rails 3? - PullRequest
41 голосов
/ 24 марта 2011

В контроллере приложения перед фильтром.

class ApplicationController < ActionController::Base
  before_filter :authenticate

  def authenticate
    # How do we know which controller and action was targetted?
  end
end

Ответы [ 4 ]

83 голосов
/ 24 марта 2011
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
13 голосов
/ 13 октября 2012

В Rails 3.2 вам больше не нужно явно вызывать controller.action_name, а просто "action_name".

before_filter :check_if_locked


def check_if_locked
  puts action_name
  puts controller_name
end
12 голосов
/ 24 марта 2011

Вы можете получить полный объект URL, используя

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

теперь вы можете получить компоненты как

url[:controller]

url[:action]

По умолчанию вы также можете использовать params[:controller] и params[:action] соответственно в течение жизненного цикла запроса / ответа.

4 голосов
/ 03 марта 2015
request.parameters['controller']
request.parameters['action']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...