Public Instance methods
render_each(enum, template, opts=(no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS), &block)
For each value in enum, render the given template using the given opts. The template and options hash are passed to render
. Additional options supported:
:local |
The local variable to use for the current enum value inside the template. An explicit |
[show source]
# File lib/roda/plugins/render_each.rb 109 def render_each(enum, template, opts=(no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS), &block) 110 if optimized_template 111 return _optimized_render_each(enum, optimized_template, render_each_default_local(template), {}, &block) 112 elsif opts.has_key?(:local) 113 as = opts[:local] 114 else 115 as = render_each_default_local(template) 116 if no_opts && optimized_template.nil? && (optimized_template = _optimized_render_method_for_locals(template, (locals = {as=>nil}))) 117 return _optimized_render_each(enum, optimized_template, as, locals, &block) 118 end 119 end 120 121 if as 122 opts = opts.dup 123 if locals 124 opts[:locals] = locals 125 else 126 locals = opts[:locals] = if locals = opts[:locals] 127 Hash[locals] 128 else 129 {} 130 end 131 locals[as] = nil 132 end 133 134 if (opts.keys - ALLOWED_KEYS).empty? && (optimized_template = _optimized_render_method_for_locals(template, locals)) 135 return _optimized_render_each(enum, optimized_template, as, locals, &block) 136 end 137 end 138 139 if defined?(yield) 140 enum.each do |v| 141 locals[as] = v if as 142 yield render_template(template, opts) 143 end 144 nil 145 else 146 enum.map do |v| 147 locals[as] = v if as 148 render_template(template, opts) 149 end.join 150 end 151 end