大周末,就不应该折腾代码啥的,遇到一个问题,没有思路,过来请教下:
我有一个导航的局部视图,再多个页面用到,而且是加载相同的数据,topics_nav.html.erb
代码如下:
<div class="panel nodes" >
<p>分类导航</p>
<% if @sections.count > 0 %>
<dl class="accordion" data-accordion>
<% @sections.each do |section| %>
<dd class="accordion-navigation">
<a href="#section<%= section.id %>" class="first"><%= section.name %> <i>(<%= section.nodes_count %>)</i></a>
<div id="section<%= section.id %>" class="content">
<dl class="accordion">
<% section.nodes.each do |node| %>
<dd class="accordion-navigation">
<%= link_to node.name, topics_node_path(node_id: node.id) %>
</dd>
<% end %>
</dl>
</div>
</dd>
<% end %>
</dl>
<% else %>
<i>还没有创建节点哦</i>
<% end %>
</div>
使用gem 'cells', "3.9.1"
把它进行组件化之后,
class NodeCell < Cell::Rails
cache :topics_nav, :expires_in => 1.days
def topics_nav
@sections = Section.topics.includes(:nodes)
render
end
end
在用到的地方进行渲染<%= render_cell :node, :topics_nav %>
。
现在问题来了,每次刷新,或者每次加载用到这个导航视图的时候,都会向数据库发起请求,但数据视没有变化的,如下:
我就想,它不用去请求数据库,直接渲染视图。。。。。。 有没有谁可以提供点思路? 或者,社区里曾经有类似的帖子?