Доступны ли методы в контроллере после helper_method для всех представлений в rails - PullRequest
0 голосов
/ 15 декабря 2011

Для защищенных методов в контроллерах рельсов они доступны для просмотра, объявив их с помощью helper_method.По умолчанию методы в rails, вспомогательные для представлений, являются общими (доступными) для всех представлений.У меня вопрос, методы контроллера, объявляемые с помощью helper_method, совместно используются (доступны) также для всех представлений?

1 Ответ

2 голосов
/ 15 декабря 2011

Если вы объявите метод контроллера как помощник с помощью helper_method, то помощник будет доступен только в представлениях, принадлежащих контроллеру.

Если вы хотите сделать помощника доступным во всех представлениях, вы должны определить метод контроллера и объявить помощника в контроллере приложения.

Если вы заинтересованы, это соответствующий код Rails:

def helper_method(*meths)
  meths.flatten!
  self._helper_methods += meths

  meths.each do |meth|
    _helpers.class_eval <<-ruby_eval, __FILE__, __LINE__ + 1
      def #{meth}(*args, &blk)
        controller.send(%(#{meth}), *args, &blk)
      end
    ruby_eval
  end
end

Вы можете видеть, что при вызове помощник просто вызывает метод с тем же именем на контроллере.

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