Направляющие ActionController выполняют тот же код для каждого действия

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

Заранее спасибо любому, кто может помочь.

17
задан Brian DiCasa 10 February 2010 в 02:39
поделиться

3 ответа

Используйте фильтр в ApplicationController, чтобы запускать код для каждого действия в вашем приложении. Все ваши контроллеры происходят от ApplicationController, поэтому установка фильтра туда обеспечит запуск фильтра.

class ApplicationController
  before_filter :verify_security_token
  def verify_security_token; puts "Run"; end;
end
31
ответ дан 30 November 2019 в 10:49
поделиться

Мне кажется, вы говорите о фильтрах .

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, если хотите, чтобы каждый контроллер запускал его.

15
ответ дан 30 November 2019 в 10:49
поделиться
  • before_filter , если вы хотите, чтобы код выполнялся «перед» каждым действием.

  • Если вы хотите, чтобы действие объявлялось каждый раз, когда вы его используете, вы можете поместить его в ApplicationController и вызвать метод в любом контроллере.

Другой подход - использовать такие помощники, как:

module PersonHelper
   def eat
     {.. some code ..}
   end
end

И в вашем контроллере:

class MyController < ActionController::Base
  include PersonHelper

  def index
     eat
  end
end
2
ответ дан 30 November 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: