Доступ к params [] и локальным атрибутам в статическом классе как * _filter - PullRequest
0 голосов
/ 26 мая 2010

Я пытаюсь реорганизовать некоторый код и переместить некоторые из моих before_filter из контроллера в класс.

До:

class UsersController < ApplicationController
   before_filter :find_user

   def find_user
      @user = User.find(params[:id])
   end
end

...

После

class FindUserFilter
    def self.filter(controller)
        @user = User.find(params[:id])
    end
end

class UsersController < ApplicationController
   before_filter FindUserFilter
end

class GuestbookController < ApplicationController
   before_filter FindUserFilter
end

Это приводит к ошибке, поскольку ни params[:id], ни @user не доступны / не определены в FindUserFilter -классе.

Есть идеи, как это исправить?

1 Ответ

1 голос
/ 26 мая 2010

Ваш код должен быть запущен в области действия @controller. Одним из решений будет

class FindUserFilter
  def self.filter(controller)
    controller.instance_eval do
      @user = User.find(params[:id])
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...