2015-11-19 62 views
0

我想將Rails中的產品碎片緩存,但注意到一旦緩存它就不會切換貨幣。我通過會話變量設置當前貨幣,如session[:currency] = "USD"產品+金錢寶石上的Rails碎片緩存exchange_to Rate

在此示例中,一旦用戶使用此方法切換其貨幣,將無法顯示<%= Money.new(p.price, "EUR").exchange_to("GBP") %>

<% Product.all.each do |p| %> 
    <% cache(p) do %> 
    <%= link_to p.name, product_url(p) %> 
    <%= Money.new(p.price, "EUR").exchange_to(session[:currency]) %> 
    <% end %> 
<% end %> 

我怎樣才能讓軌道緩存不同Money對象,也仍然使用exchange_to

謝謝!

回答

1

您只需將貨幣添加到緩存鍵。這使得Rails的緩存爲每種貨幣一個版本:

<% Product.all.each do |p| %> 
    <% cache [p, session[:currency]] do %> 
    <%= link_to p.name, product_url(p) %> 
    <%= Money.new(p.price, "EUR").exchange_to(session[:currency]) %> 
    <% end %> 
<% end %> 

the docs對於那些dependending多個來源鍵。