Rails动作缓存和json响应

Vic*_*r S 11 memcached json ruby-on-rails

我在使用JSON请求响应时遇到问题,同时启用了操作缓存.

我有一个相当简单的控制器,它响应JSON和HTML,缓存适用于HTML响应,但我注意到当我请求JSON,并且通常会响应JSON,但启用了动作缓存,它将JSON输出包装在布局中!

当我清除缓存时,它给出了一个错误,没有默认布局:

ClipsController#index中的ArgumentError

在...中没有ClipsController的默认布局

如何为缓存操作返回JSON?

更新,我怀疑布局错误与我缓存操作的方式有关:

caches_action :index, :layout => false

我不确定,为什么在JSON响应的情况下仍然需要布局,因为没有缓存没有问题.

暂时我已经修改了缓存过滤器以不缓存JSON请求,但这不是一个理想的解决方法,如果我想缓存JSON,该怎么办?

caches_action :index, :layout => false, :if => Proc.new { |c| !c.request.format.json? }

teh*_*ter 1

看起来这实际上可能是动作缓存的一个错误,但也许有一些我不明白的地方。

查看这一行,看看哪里出了问题。基本上,如果您将布局选项设置为 false,它不会关心,并尝试使用布局来渲染它。