Вызов метода контроллера из вспомогательного модуля
Использование Rails 3.2
Я пытаюсь позвонить expire_fragment
метод представления Rails от помощника, но получающий ошибку:
undefined method `expire_fragment' for #<#<Class:0x00000118977110>:0x00000103b853b8>
Я пытаюсь условно очистить кеш. Это вызов вспомогательного метода, на мой взгляд
clear_cache_keys_if(params[:cc], [@product, :search_filters])
И в помощнике
def clear_cache_keys_if(condition, keys = [])
if condition
keys.each do |key|
expire_fragment(key)
end
end
end
Я бы подумал, что методы кэширования фрагментов Rails будут доступны в вспомогательном модуле, но это не так.
Я изменил это на
controller.expire_fragment(key)
И это сработало.
Этот метод доступен в представлении. Это доступно из контроллера. Я не очень понимаю, почему это не доступно в помощнике. Что мне здесь не хватает? Почему это не доступно в помощнике и каков наилучший способ показать это? Спасибо