Sha256: 4b978ec9be07c6e4b7bb4cdad28f62abe35d8ff3026bc521183ce3ea9c299a24
Contents?: true
Size: 1.88 KB
Versions: 2
Compression:
Stored size: 1.88 KB
Contents
module ActionView # = Action View Cache Helper module Helpers module CacheHelper # This helper exposes a method for caching fragments of a view # rather than an entire action or page. This technique is useful # caching pieces like menus, lists of newstopics, static HTML # fragments, and so on. This method takes a block that contains # the content you wish to cache. # # See ActionController::Caching::Fragments for usage instructions. # # ==== Examples # If you want to cache a navigation menu, you can do following: # # <% cache do %> # <%= render :partial => "menu" %> # <% end %> # # You can also cache static content: # # <% cache do %> # <p>Hello users! Welcome to our website!</p> # <% end %> # # Static content with embedded ruby content can be cached as # well: # # <% cache do %> # Topics: # <%= render :partial => "topics", :collection => @topic_list %> # <i>Topics listed alphabetically</i> # <% end %> def cache(name = {}, options = nil, &block) if controller.perform_caching safe_concat(fragment_for(name, options, &block)) else yield end nil end private # TODO: Create an object that has caching read/write on it def fragment_for(name = {}, options = nil, &block) #:nodoc: if fragment = controller.read_fragment(name, options) fragment else # VIEW TODO: Make #capture usable outside of ERB # This dance is needed because Builder can't use capture pos = output_buffer.length yield fragment = output_buffer.slice!(pos..-1) controller.write_fragment(name, fragment, options) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
actionpack-3.1.0.rc2 | lib/action_view/helpers/cache_helper.rb |
actionpack-3.1.0.rc1 | lib/action_view/helpers/cache_helper.rb |