2011-08-16 23 views
1

比方说,我树立了 “产品” 在我的控制器:如何在Rails中缓存动态片段?

# 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局部变量,当然每个s产生一个动态局部变量特殊产品。

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

回答

2

诀窍是给缓存一个特定的键,如“product_24_description”。这样一来,每个高速缓存会有所不同:

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

当你在它,观看此视频(以及相关视频)约scaling Rails

+0

另请参阅http://railscasts.com/episodes/172-touch-and-cache – mark