gpt4 book ai didi

ruby-on-rails-3 - 导轨缓存 : expire_action in another namespace

转载 作者:行者123 更新时间:2023-12-03 14:33:57 24 4
gpt4 key购买 nike

我的应用程序将命名空间用于管理目的。我最近尝试开始使用 Action 缓存,但是在尝试使用 expire_action 使缓存过期时遇到了一些问题。基本上,我在默认命名空间 newsposts Controller 中有一个索引操作,它使用如下操作缓存进行缓存:

class NewspostsController < ApplicationController

caches_action :index, :layout => false

def index
@posts = Newspost.includes(:author).order("created_at DESC").limit(5)
end

end

这会将 View 缓存在views/host/newsposts 下。

默认命名空间没有修改数据的操作,它们都在我的管理命名空间中。在我的 Admin::NewspostsController 中,我试图在创建操作中使此缓存过期,如下所示:
expire_action(:controller => 'newsposts', :action => 'index')

但是,这将使位于views/host/admin/newsposts 下的缓存文件过期。显然它不能工作,因为我在 admin 命名空间中,并且 rails 正在(正确地)寻找这个命名空间的过期缓存。遗憾的是,我无法将命名空间参数传递给 axpire_action 方法,那么如何使另一个命名空间中的 Action 缓存过期?

最佳答案

经过更多的挖掘,我终于找到了解决方案。在 url_for 方法中有点暗示:

特别是,前导斜杠确保不假定命名空间。因此,如果当前 Controller 位于该模块下,则 url_for :controller => 'users' 可能会解析为 Admin::UsersController,但 url_for :controller => '/users' 确保无论如何链接到::UsersController。

所以基本上,

expire_action(:controller => '/newsposts', :action => 'index')

将在默认命名空间中过期,并且
expire_action(:controller => 'admin/newsposts', :action => 'index')

在 admin 命名空间中(默认时)。

RailsCast

关于ruby-on-rails-3 - 导轨缓存 : expire_action in another namespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5082181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com