Module: Padrino::Helpers::RenderHelpers
- Defined in:
- padrino-helpers/lib/padrino-helpers/render_helpers.rb
Overview
Helpers related to rendering within templates (i.e partials).
Instance Method Summary collapse
-
#partial(template, options = {}, &block) ⇒ String
(also: #render_partial)
Render a partials with collections support.
Instance Method Details
#partial(template, options = {}, &block) ⇒ String Also known as: render_partial
Note:
If using this from Sinatra, pass explicit :engine
option
Render a partials with collections support.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'padrino-helpers/lib/padrino-helpers/render_helpers.rb', line 33 def partial(template, ={}, &block) = { :layout => false }.update() explicit_engine = .delete(:engine) path, _, name = template.to_s.rpartition(File::SEPARATOR) template_path = path.empty? ? :"_#{name}" : :"#{path}#{File::SEPARATOR}_#{name}" item_name = name.partition('.').first.to_sym items, counter = if [:collection].respond_to?(:inject) [.delete(:collection), 0] else [[.delete(:object)], nil] end locals = .delete(:locals) || {} items.each_with_object(SafeBuffer.new) do |item,html| locals[item_name] = item if item locals["#{item_name}_counter".to_sym] = counter += 1 if counter content = if block_given? concat_content(render(explicit_engine, template_path, , locals) { capture_html(&block) }) else render(explicit_engine, template_path, , locals) end html.safe_concat content if content end end |