Вызов метода контроллера из вспомогательного модуля

Использование 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) 

И это сработало.

Этот метод доступен в представлении. Это доступно из контроллера. Я не очень понимаю, почему это не доступно в помощнике. Что мне здесь не хватает? Почему это не доступно в помощнике и каков наилучший способ показать это? Спасибо

0 ответов

Другие вопросы по тегам