2016-12-07 22 views
0

在我的索引我打電話緩存是否可用於rails視圖中的所有相同查詢?

<% Shoes.roots.each do |shoe| %> 
    <%= link_to shoe.shoe_name, shoe %> 
<% end %> 

我有一些HTML組織的網頁及以後調用:

<% Shoe.roots.each do |shoe| %>  
    <%= link_to shoe.shoe_name, shoe %> 
    <%= shoe.shoe_size %> 
<% end %> 

提供一些鏈接和鞋碼。

我正在使用rack-mini-profiler,它告訴我我沒有做兩個單獨的查詢。如果我緩存頂部。每個做:

<% Shoes.roots.each do |shoe| %> 
    <% cache(shoe) do %> 
    <%= link_to shoe.shoe_name, shoe %> 
    <% end %> 
<% end %> 

是一個底部,即使我不使用shoe.shoe_size在頂部。每個做也緩存?它會以相反的方式工作嗎?

回答

1

Rails會緩存SQL查詢。如果查詢在同一請求內是相同的,則它不會再次執行相同的請求。

你應該考慮在控制器分配你的鞋子實例變量:

@roots = Shoe.roots 

,然後在視圖中訪問該變量

<% @roots.each do |shoe| %> 
    <%= link_to shoe.shoe_name, shoe %> 
<% end %> 

<% @roots.each do |shoe| %>  
    <%= link_to shoe.shoe_name, shoe %> 
    <%= shoe.shoe_size %> 
<% end %> 
相關問題