diff --git a/actionpack/lib/action_controller/caching.rb b/actionpack/lib/action_controller/caching.rb index 7749b07815558e202bba4bb01d47f9806d5b2cc2..55a4b77fdafd396cb79e5895c55c5e01c4be76f9 100644 --- a/actionpack/lib/action_controller/caching.rb +++ b/actionpack/lib/action_controller/caching.rb @@ -180,11 +180,16 @@ def expire_action(options = {}) class ActionCacheFilter #:nodoc: def initialize(*actions) @actions = actions + @action_urls = {} + end + + def action_url(controller) + @action_urls[controller.action_name] ||= controller.url_for.split("://").last end def before(controller) return unless @actions.include?(controller.action_name.intern) - if cache = controller.read_fragment(controller.url_for.split("://").last) + if cache = controller.read_fragment(action_url(controller)) controller.rendered_action_cache = true controller.send(:render_text, cache) false @@ -193,7 +198,7 @@ def before(controller) def after(controller) return if !@actions.include?(controller.action_name.intern) || controller.rendered_action_cache - controller.write_fragment(controller.url_for.split("://").last, controller.response.body) + controller.write_fragment(action_url(controller), controller.response.body) end end end