如何在Rails中缓存动态片段?

时间:2011-08-16 02:54:59

标签: ruby-on-rails caching

假设我在我的控制器上设置了“产品”:

# products_controller.rb
def show
  @product = Product.find(params[:id])
end

/products/show.html.erb我得到了:

<%= render :partial => 'products/description', :locals => { :product => @product } %>

我想做这样的事情:

<% cache do %>
  <%= render :partial => 'products/description', :locals => { :product => @product } %>
<% end %>

但是,正如您所看到的,description部分采用product局部变量,当然会为每个特定产品生成动态部分变量。

我的问题是,我如何使用Rail的缓存,所以我只需要在第一次请求特定产品时生成这部分内容?

1 个答案:

答案 0 :(得分:2)

诀窍是给缓存一个特定的密钥,比如“product_24_description”。这样,每个缓存都会有所不同:

cache "#{dom_id product}_description" do
  ...
end

在您观看此视频时,请观看有关scaling Rails的视频(和相关视频)。