我最近进入了Rails中的页面/片段缓存(感谢Railscast #90)。但是当我自己尝试时,它让我的观点更加丑陋。
在大多数情况下,我在互联网上找到的例子只是缓存了一个简单的实体查询(大多数情况下,“most_recent_products”
但是当我开始使用用户的最新文章(简单的博客示例)缓存用户个人资料时,它会很快变得混乱。
实施例
show.html.erb:
# some code
<% cache "user#{params[:id]}" do %>
<div id="user">
<h2>Product.find(params[:id])</h2>
<ul>
<% for article in Articles.find_by_user(Product.find(params[:id])) %>
<li><%= link_to h(article), article %></li>
<% end %>
</ul>
</div>
<% end %>
# some code
如果我不想进行单个数据库查询(缓存时),这就是要做的事情(所有查询必须进入缓存块)。
我知道你可以通过局部来简化它,或者将它存储在一个变量中,但是只要涉及多个实体,你就需要在视图中执行很多逻辑。
是否有更好的方法可以在其他地方加载所需的所有变量(@ user,@ article),但只在需要时填充它们(我不想检查控制器中的缓存)