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) content_tag(tag, nil, id: "rl-#{key}", class: binding.local_variable_get(:class), style: 'display: none') end |
#render_now ⇒ Object
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 content_tag('script', raw(INSERT_FUNCTION)) deferred_objects.each do |key, block| concat content_tag('script', raw("rl_insert('rl-#{key}', '#{j capture(&block)}');\n")) end nil rescue Errno::EPIPE end |