diff options
author | Fabrizio Regini <freegenie@gmail.com> | 2012-11-29 16:16:18 +0100 |
---|---|---|
committer | Fabrizio Regini <freegenie@gmail.com> | 2012-12-05 14:58:38 +0100 |
commit | 6b014a4580a8f17ebb73b441e029c0bb7d34a8c5 (patch) | |
tree | a9f295db53729358accbeb047fe1d0be55e87060 /actionpack/lib/action_view/helpers | |
parent | e905639af2fe947ff7e1e2331e9216032dff8b3e (diff) | |
download | rails-6b014a4580a8f17ebb73b441e029c0bb7d34a8c5.tar.gz rails-6b014a4580a8f17ebb73b441e029c0bb7d34a8c5.tar.bz2 rails-6b014a4580a8f17ebb73b441e029c0bb7d34a8c5.zip |
Allow fragment cache to accept :if and :unless options
[Stephen Ausman + Fabrizio Regini]
Diffstat (limited to 'actionpack/lib/action_view/helpers')
-rw-r--r-- | actionpack/lib/action_view/helpers/cache_helper.rb | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/actionpack/lib/action_view/helpers/cache_helper.rb b/actionpack/lib/action_view/helpers/cache_helper.rb index db920ae7a4..8693f4f0e4 100644 --- a/actionpack/lib/action_view/helpers/cache_helper.rb +++ b/actionpack/lib/action_view/helpers/cache_helper.rb @@ -110,8 +110,15 @@ module ActionView # <%= some_helper_method(person) %> # # Now all you'll have to do is change that timestamp when the helper method changes. + # + # ==== Conditional caching + # + # You can pass :if and :unless options, to conditionally perform or skip the cache. + # + # <%= cache @model, if: some_condition(@model) do %> + # def cache(name = {}, options = nil, &block) - if controller.perform_caching + if controller.perform_caching && conditions_match?(options) safe_concat(fragment_for(cache_fragment_name(name, options), options, &block)) else yield @@ -136,6 +143,11 @@ module ActionView end private + + def conditions_match?(options) + !(options && (!options.fetch(:if, true) || options.fetch(:unless, false))) + end + def fragment_name_with_digest(name) #:nodoc: if @virtual_path [ |