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 に答える