我正在关注“使用 Rails 4 进行敏捷 Web 开发”一书,但我被困在关于缓存的第 105 页。
我有以下代码index.html.erb
<% if notice %>
<p id="notice"><%= notice %></p>
<% end %>
<h1>Your Pragmatic Catalog</h1>
<% cache ['store', Product.latest] do %>
<% @products.each do |product| %>
<% cache ['entry', product] do %>
<div class="entry">
<%= image_tag(product.image_url) %>
<h3><%= product.title %></h3>
<%= sanitize(product.description) %>
<div class="price_line">
<span class="price"><%= number_to_currency(product.price) %></span>
</div>
</div>
<% end %>
<% end %>
<% end %>
第一个疑问如下:
1) 究竟cache ['store', Product.latest]
是做什么的?它创建一个缓存,可用于所有 StoreController 操作,名为“store”,并将缓存与 Product.latest 相关联:为什么我应该做最后一件事?为什么我需要将我的缓存关联到 Product.latest?
这本书总是在同一页上说:“至于验证这是否有效,不幸的是没有什么可看的。如果你去那个页面,你应该看到没有任何变化,这实际上是重点!最好的你可以做的是在缓存块内的任何位置对模板进行更改,而不更新任何产品,并验证您没有看到该更新,因为页面的缓存版本尚未更新”。
所以我尝试了这样的事情:
<% cache ['store', Product.latest] do %>
"hello"
........
........
<% end %>
但我仍然得到这个更新,页面显示“hello”字符串,为什么会这样?我不应该看到吗?
PS显然我编辑了我的config/environments/development.rb
并重新启动了服务器