Если вы объявите метод контроллера как помощник с помощью 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
Вы можете видеть, что при вызове помощник просто вызывает метод с тем же именем на контроллере.