我有一个视图来显示保存在数据库中的资源的详细信息。一些细节属于 Resource 模型本身,一些细节属于关联模型。
在视图中,我使用片段缓存来获取详细信息。
当用户按下视图上的按钮时,视图的一部分将被表单替换,因此用户可以在不加载新页面的情况下编辑详细信息。打开表单时,缓存已过期(实际上是,我已经检查过)。当用户提交表单 ( using :remote => true
) 时,表单被隐藏,并且使用 jQuery 重新加载原始内容并呈现部分内容。
到目前为止,一切正常。原始内容使用新值正确重新加载,来自内部代码<% cache ... do %>
和<% end %>
.
奇怪的是,当我重新加载页面时,一些新值消失了。而是显示一些旧值(那些应该在最后一次提交后被缓存的值)。更奇怪的是,一些值被更新了,即使它们与错误值在同一个新缓存文件中。
据我所知,关联模型中的值是正确的,而 Resource 模型中的值是错误的(旧的)。我一直在想是不是跟sql缓存有关系,但我觉得不是这样,因为我觉得重载页面的时候应该清空sql缓存。
如果我打开表单并再次提交,数据就会更新,一切都很好。那就是上次提交的数据正在进入缓存。如果我在提交之前更改了表单中的数据,它仍然是缓存文件中包含的上次提交的数据。因此,即使其他字段已正确更新,似乎为 Resource 模型提交的数据也会被一次提交延迟。
如果我在 development.rb 中关闭缓存,一切都会按预期进行。每次更新所有数据。
顺便说一句,我确实在我的服务器上遇到了同样的问题。
任何有线索的人?