Module: RenderLater::ViewHelper

Defined in:
app/helpers/render_later/view_helper.rb

Constant Summary collapse

INSERT_FUNCTION =
"  function rl_insert(name, data) {\n    if (node = document.getElementById(name)) {\n      var div = document.createElement(node.parentNode.tagName || 'div');\n      div.innerHTML = data;\n      var elements = div.childNodes;\n      for (var i = elements.length; i > 0; i--) {\n        node.parentNode.insertBefore(elements[0], node);\n      }\n      node.parentNode.removeChild(node);\n    }\n  };\n".freeze

Instance Method Summary collapse

Instance Method Details

#render_later(key, tag: :span, class: "rl-placeholder", &block) ⇒ Object



17
18
19
20
# File 'app/helpers/render_later/view_helper.rb', line 17

def render_later key, tag: :span, class: "rl-placeholder", &block
  store_object(key, &block)
  (tag, nil, id: "rl-#{key}", class: binding.local_variable_get(:class), style: 'display: none')
end

#render_nowObject



22
23
24
25
26
27
28
29
30
# File 'app/helpers/render_later/view_helper.rb', line 22

def render_now
  return nil if deferred_objects.empty?
  concat ('script', raw(INSERT_FUNCTION))
  deferred_objects.each do |key, block|
    concat ('script', raw("rl_insert('rl-#{key}', '#{j capture(&block)}');\n"))
  end
  nil
rescue Errno::EPIPE
end