Подтвердить что ты не робот

Rails ActionController выполняет один и тот же код для каждого действия

Для экспертов по рельсам я задавался вопросом, где/как вы будете выполнять один и тот же код для каждого действия в своем веб-приложении? Если вы можете указать мне статью или предоставить короткий фрагмент кода, я бы очень признателен.

Спасибо заранее всем, кто может помочь.

4b9b3361

Ответ 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