我的控制器有這樣的:軌道3緩存:過期行動命名的路由
caches_action :render_ticker_for_channel, :expires_in => 30.seconds
在我的路線文件我有這樣的:
match '/render_c_t/:channel_id' => 'render#render_ticker_for_channel', :as => :render_channel_ticker
在日誌文件中我看到這一點:
Write fragment views/mcr3.dev/render_c_t/63 (11.6ms)
如何手動過期?我需要從渲染控制器不同的控制器中過期,但即使在渲染控制器中,我也無法讓它過期。
如果我做的:
expire_action(:controller => 'render', :action => 'render_ticker_for_channel', :id => c.id)
我看到:
Expire fragment views/mcr3.dev/render/render_ticker_for_channel/63 (3.2ms)
如果我做的:
expire_action(:controller => 'render', :action => 'render_c_t', :id => c.id)
我看到:
Expire fragment views/mcr3.dev/render/render_c_t/63 (3.2ms)
這樣:
expire_action("render_c_t/#{c.id}")
生產:
Expire fragment views/render_c_t/63 (3.5ms)
我怎樣才能得到它過期那caches_action'是生產相同的路徑?
我沒有足夠的信心將此添加爲完整的答案,但是您是否試過了後門? 'Rails.application.routes.url_helpers'可以讓你訪問你的幫助器,並返回一個字符串,這個字符串就是在Location標題中發送給瀏覽器的路徑和/或URL。試試'Rails.application.routes.url_helpers.render_ticker_for_channel_path(63)'和'Rails.application.routes.url_helpers.render_ticker_for_channel(63,:host =>'mcr3。dev')'你可能能夠將結果字符串(通過一些操作)傳遞給'expire_action'並讓它找到正確的緩存塊。醜陋的,但可能工作 –