最近学习Rails。
看到如下代码:
<% if notice %>
<p id="notice"><%= notice %></p>
<% end %> <h1>Your Pragmatic Catalog</h1> <!-- START_HIGHLIGHT -->
<% cache ['store', Product.latest] do %>
<!-- END_HIGHLIGHT -->
<% @products.each do |product| %>
<!-- START_HIGHLIGHT -->
<% cache ['entry', product] do %>
<!-- END_HIGHLIGHT -->
<div class="entry">
<%= image_tag(product.image_url) %>
<h3><%= product.title %></h3>
<%= sanitize(product.description) %>
<div class="price_line">
<!-- START:currency -->
<span class="price"><%= number_to_currency(product.price) %></span>
<!-- END:currency -->
</div>
</div>
<!-- START_HIGHLIGHT -->
<% end %>
<!-- END_HIGHLIGHT -->
<% end %>
<!-- START_HIGHLIGHT -->
<% end %>
<!-- END_HIGHLIGHT -->
对其中<% cache ['store', Product.latest] do %>不是很明白。研究后有如下发现:
1、配置
配置 : /config/environments/development.rb
config.action_controller.perform_caching = true #开发环境下启动缓存
2、定义
File : lib/ruby/gems/2.0.0/gems/actionpack-4.0.3/lib/action_view/helpers/cache_helper.rb
Module : ActionView::Helpers::CacheHelper
Type: Instance Public methods
3、应用
When using this method, you list the cache dependency as the name of the cache, like so:
<% cache project do %>
<b>All the topics on this project</b>
<%= render project.topics %>
<% end %>
views/projects/123-20120806214154/7a1156131a6928cb0026877f8b749ac9
^class ^id ^updated_at ^template tree digest
If your template cache depends on multiple sources (try to avoid this to keep things simple),
you can name all these dependencies as part of an array:
<% cache [ project, current_user ] do %>
<b>All the topics on this project</b>
<%= render project.topics %>
<% end %>