Rails ActionController выполняет одинаковый код для каждого действия - PullRequest
17 голосов
/ 10 февраля 2010

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

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

Ответы [ 3 ]

31 голосов
/ 10 февраля 2010

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

class ApplicationController
  before_filter :verify_security_token
  def verify_security_token; puts "Run"; end;
end
15 голосов
/ 10 февраля 2010

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

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

2 голосов
/ 10 февраля 2010
  • before_filter, если вы хотите, чтобы код выполнялся «перед» каждым действием.

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

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

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

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

class MyController < ActionController::Base
  include PersonHelper

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