我试图在Rails 4中使用片段缓存来缓存我的导航菜单。
模型
class Page < ActiveRecord::Base
belongs_to :parent, :class_name => 'Page', :touch => true
has_many :children, :class_name => 'Page',
:foreign_key => 'parent_id'
...
end这部分工作正常。每当我更新嵌套页面时,所有父级的updated_at值都会被更改。但是不会为该组页面编写新的缓存视图文件。
导航视图
<nav>
<ul>
<% Page.level_1.each do |page_1| %>
<% cache page_1 do %>
<li>
<%= link_to page_1.title, level_1_page_path(page_1.slug) %>
<% if page_1.children.count > 0 %>
# continue nesting children
...
<% end %>
</li>
<% end %>
<% end %>
</ul>
</nav>为什么Rails没有识别页面中的更改?
发布于 2014-02-25 15:58:17
原来我的一切都是正确的,但我的模型的范围:
scope :level_1, where(:level => 1)默认情况下被缓存,因为它不包含lambda。将范围改为:
scope :level_1, -> { where(:level => 1) }解决了我的问题,现在缓存摘要工作得很好。
https://stackoverflow.com/questions/22018298
复制相似问题