0

我有一个页面,我在其中迭代多个所有者的一组旅行并在页面上显示所有者图像。我想在视图中缓存整个所有者集,而不仅仅是单个部分。

<%
  Rails.cache.fetch("trip_owners_#{trip.id.to_s}", expires_in: 7.days) do
    trip.owners.limit(3).each do |owner|
%>
  <%=render_user_card(owner)%>
<% 
     end
   end
%>

render_user_card基本上呈现个人所有者的一部分。

def render_user_card(user, options = {})
  return "" unless user
  render :partial => 'users/user_card'
end

问题是我不断收到此错误:

You are trying to cache a Ruby object which cannot be serialized to memcached.

据我了解,我必须缓存一个字符串。但是,我不知道该怎么做。如何在旅途中为我的所有用户存储组合的部分,并且仍然能够呈现部分?如果我将它存储为字符串,它将呈现为字符串,而不是带有图像的部分。

4

1 回答 1

0

我能够弄清楚如何做到这一点。见下文。

<%=
  Rails.cache.fetch("trip_owners_#{trip.id.to_s}", expires_in: 7.days) do
    output = ""
    trip.owners.limit(3).each do |owner|

     output += render_user_card(owner)

    end
    output
  end.html_safe
%>
于 2013-03-29T18:52:24.053 回答