Определение вызывающего метода в ApplicationController (RoR) - PullRequest
0 голосов
/ 18 июня 2009

У меня есть метод в моем ApplicationController, который является частью before_filter. Как определить, какой контроллер вызывает этот метод, и могу ли я передать ему аргументы?

Предположительно в худшем случае, я могу создать новый объект, в котором я использую имена и значения контроллера, а затем вызвать его непосредственно в методе before_filter с помощью NewObject.find (: first,: condition => ['controller_name =?', Controller_name] , но это очень плохо пахнет.

Так что я открыт для идей. Заранее спасибо.

псевдо-короткий код:

class ApplicationController < ActionController::Base
    before_filter :someMethod
    ....
    def someMethod
        Do stuff
    end


class SomeController < ApplicationController
    # presumably the before_filter runs here
    @someValueIWantToPass = some.value
    ...

Ответы [ 2 ]

10 голосов
/ 18 июня 2009

params[:controller] и params[:action] содержат требуемый контроллер и действие и доступны из фильтра.

2 голосов
/ 18 июня 2009

Использование self.class скажет вам, какой контроллер вызвал before_filter.

class HomeController < ApplicationController
  before_filter :awesome

  def index
    render :text => @blah
  end

  def awesome
    @blah = self.class
  end
end

отобразит "HomeController"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...