Rails ActionController выполняет один и тот же код для каждого действия
Для экспертов по рельсам я задавался вопросом, где/как вы будете выполнять один и тот же код для каждого действия в своем веб-приложении? Если вы можете указать мне статью или предоставить короткий фрагмент кода, я бы очень признателен.
Спасибо заранее всем, кто может помочь.
Ответы
Ответ 1
Используйте фильтр в вашем ApplicationController для запуска кода для каждого действия в вашем приложении. Все ваши контроллеры спускаются с ApplicationController, поэтому установка фильтра гарантирует, что фильтр будет запущен.
class ApplicationController
before_filter :verify_security_token
def verify_security_token; puts "Run"; end;
end
Ответ 2
Мне кажется, что вы говорите filters.
class MyController < ActionController::Base
before_filter :execute_this_for_every_action
def index
@foo = @bar
end
def new
@foo = @bar.to_s
end
def execute_this_for_every_action
@bar = :baz
end
end
Вы также можете поместить фильтр в ApplicationController, если вы хотите, чтобы каждый контроллер запускал его.
Ответ 3
-
before_filter
, если вы хотите, чтобы код выполнялся "до" каждого действия.
-
Если вы хотите, чтобы действие было объявлено каждый раз, когда вы его используете, вы можете поместить его в ApplicationController
и вызвать метод на любом контроллере.
Другой подход заключается в использовании помощников, таких как:
module PersonHelper
def eat
{.. some code ..}
end
end
И в вашем контроллере:
class MyController < ActionController::Base
include PersonHelper
def index
eat
end
end