2011-08-16 27 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