Skip to content

Instantly share code, notes, and snippets.

@PritiKumr
Forked from joakimk/controller.rb
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PritiKumr/b198d7a4cff0cf098729 to your computer and use it in GitHub Desktop.
Save PritiKumr/b198d7a4cff0cf098729 to your computer and use it in GitHub Desktop.
class Controller
include LazyLoad
def show
@model = Model.find(...)
respond_to do |format|
format.html do
@html_specific_data = Model.find(...)
end
render_lazy_load(format) do
@lazy_specific_data = Model.find(...)
end
end
end
end
module Helper
def lazy_render(name)
content_tag :div, :id => "lazy-loaded-#{name}" do
content_tag :div, :class => "spinner" do
content_tag(:script) do
"if(!window.lazyLoads) { window.lazyLoads = []; }; window.lazyLoads.push('#{name}');".html_safe
end
end
end
end
end
module LazyLoad
def render_lazy_load(format, &block)
format.js do
block.call if block
render json: {
lazy_load_partial: params[:lazy_load_partial],
body: render_to_string(:partial => params[:lazy_load_partial])
}
end
end
end
if window.lazyLoads
for lazyLoad in window.lazyLoads
url = window.location.href + "?format=js&lazy_load_partial=#{lazyLoad}"
$.ajax url: url, dataType: "json", success: (data) ->
$("#lazy-loaded-#{data.lazy_load_partial}").html(data.body)
= render 'foobar'
becomes
= lazy_render 'foobar'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment