Memcached和Rails片段缓存问题

Mic*_*man 0 ruby memcached caching ruby-on-rails fragment-caching

当我有2个视图片段缓存相同的查询但是以不同方式显示它们时,只有一个片段,它们都以相同的方式显示它们.有没有办法解决?例如...

#views/posts/list
    - cache(@posts) do
         - for p in @posts
              = p.title

#views/posts/list_with_images
    - cache(@posts) do
         - for p in @posts
              = p.title
              = p.content
              = image_tag(p.image_url)

#controllers/posts_controller
     def list
        ...
        @posts = Post.all
     end

     def list_with_images
        ...
        @posts = Post.all
     end
Run Code Online (Sandbox Code Playgroud)

gre*_*gor 5

您必须使用唯一的缓存键.如果你简单地传入一个对象,它会调用它上面的cache_key方法来确定密钥.如果传入一个对象数组,cache将通过连接数组所有元素的缓存键来生成一个键.您可以使用它来解决您的问题:

#views/posts/list
    - cache([:list, @posts]) do
         - for p in @posts
              = p.title

#views/posts/list_with_images
    - cache([:list_with_images, @posts]) do
         - for p in @posts
              = p.title
              = p.content
              = image_tag(p.image_url)
Run Code Online (Sandbox Code Playgroud)