Module: CacheRocket
- Includes:
- Key
- Defined in:
- lib/cache_rocket.rb,
lib/cache_rocket/key.rb,
lib/cache_rocket/version.rb,
lib/cache_rocket/fragment.rb
Defined Under Namespace
Modules: Key Classes: Fragment
Constant Summary collapse
- ERROR_MISSING_KEY_OR_BLOCK =
"You must either pass a `replace` key or a block to render_cached."- VERSION =
"0.2.1"
Constants included from Key
Instance Method Summary collapse
-
#render_cached(partial, options = {}) ⇒ Object
Supports 5 options:.
Methods included from Key
Instance Method Details
#render_cached(partial, options = {}) ⇒ Object
Supports 5 options:
-
Single partial to replace. “inner” is the key name and “_inner.*” is the partial file name.
render_cached "container", replace: "inner"
-
Array of partials to replace
render_cached "container", replace: ["inner"]
-
Map of keys to replace with values
render_cached "container", replace: {key_name: a_helper_method(object)}
-
Yield to a hash of keys to replace with values
render_cached "container" do
{key_name: a_helper_method(object)}
end
-
Render a collection with Procs for replace values.
render_cached "partial", collection: objects, replace: { key_name: ->(object){a_method(object)} }
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/cache_rocket.rb', line 36 def render_cached(partial, ={}) replace_hash = .delete(:replace) collection = .delete(:collection) fragment = Fragment.new(render(partial, )) case replace_hash when Hash fragment.replace replace_hash, collection when NilClass raise ArgumentError.new(ERROR_MISSING_KEY_OR_BLOCK) unless block_given? fragment.replace yield, collection else key_array = *replace_hash key_array.each do |key| fragment.gsub! cache_replace_key(key), render(key, ) end end fragment.to_s.html_safe end |