% content_for :js do %> tab_pane_valid_state = {}; function ajaxRefreshTabPane(pane) { if (!tab_pane_valid_state[pane]) { tab_pane_valid_state[pane] = true; $(document).trigger('ajax:send'); $.ajax('<%=j url_for @object %>?tab_pane='+pane, {dataType: 'html', type: 'GET'}). done(function(data, status, jqxhr) { $('#' + pane + ' > div > div').html(data); $(document).trigger('ajax:complete'); ajaxRefreshTabPane(pane); }); } } $(window).on('load', smart_scroll_fixup); $(document).on('shown.bs.tab', 'ul.nav-tabs > li > a', smart_scroll_fixup); $(document).on('shown.bs.tab', function(e) { ajaxRefreshTabPane(e.target.id.slice(0, -4)); }); $(document).on('arv-log-event', function() { <% pane_list.each do |pane| %> tab_pane_valid_state['<%=j pane %>'] = false; <% end %> ajaxRefreshTabPane($('.tab-pane.active')[0].id); }); <% end %> <% content_for :tab_panes do %> <% comparable = controller.respond_to? :compare %>