Как сделать так, чтобы метод появлялся перед ВСЕМИ действиями контроллеров

У меня есть несколько контроллеров в моем приложении rails (UserController, PostController, SessionController и т. Д.)

перед каждым действием я хочу передать объект json, используя gon gem.

Я добавил эту строку кода в свой помощник по приложению:

module ApplicationHelper

   ...

  def adding_gon
      gon.signed_in = signed_in?      
  end
end

Я также добавил ApplicationHelper, чтобы он был доступен для всех контроллеров:

class ApplicationController < ActionController::Base
  include ApplicationHelper
end

проблема в том, что теперь мне нужно перейти к каждому контроллеру и написать эту строку кода:

before_filter :adding_gon

Это скорее дублирование написания этой строки кода для каждого контроллера.

Есть ли способ заставить этот метод выполняться перед ВСЕМИ действиями?


person Alon    schedule 28.08.2012    source источник
comment
просто предположение: не могли бы вы просто добавить его в контроллер приложения? (Я предполагаю, что другие ваши контроллеры наследуют от него)   -  person jugglinghobo    schedule 29.08.2012
comment
для получения дополнительной информации прочтите этот ответ   -  person Felix    schedule 29.08.2012


Ответы (1)


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

person rathrio    schedule 28.08.2012