在内部视图中,我可以写:
= cache_if Rails.env.production?, my_cache_key do
...
但是如何从控制器中使用cache_if方法,而不是查看?
答案 0 :(得分:0)
cache_if
是一个视图助手。它被设计为在视图上下文中混合,而不是在控制器中。
您无法在控制器中使用它。您可以尝试将助手混合到控制器中,但它不是为此而设计的,因此您不应采用该方法。
相反,您可以使用Rails.cache
来访问缓存存储。如果您想要克隆cache_if
实现,那么您可以编写自己的实现:
def cache_if(condition, name = {}, options = nil, &block)
if condition
Rails.cache.fetch(name, options, &block)
else
yield
end
end