页面加载后稍后渲染部分

时间:2013-10-07 15:57:57

标签: ruby-on-rails

使用Rails 3.2。假设我有以下观点:

<div class="content">
  <div class="main">
    <h1><%= @shop.name %></h1>
    <p><%= @shop.description %></p>
  </div>
  <div class="sidebar">
    <%= render 'teasers' %>
  </div>
</div>

有没有办法先加载页面,然后再加载teasers?原因是因为teasers需要一些时间来查询(我已经优化了查询)。

2 个答案:

答案 0 :(得分:4)

我个人有这种行为的预定义系统:

此(coffeescript)Javascript代码在每次呈现页面时执行:

$('.ajax_load').each (index, element) ->
  e = $(element)
  $.get e.data('url'), (data) =>
    $(document).replace(e, data)

因此,我的页面中响应类“ajax_load”的每个元素实际上都是由ajax调用的,例如:

%div.ajax_load{ data: { url: users_path } }

这将首先显示一个带有类ajax_load的div,并将向users_path发送请求并将div替换为响应的内容。


这是翻译的coffeescript:

$('.ajax_load').each(function(index, element) {
  var e,
    _this = this;
  e = $(element);
  return $.get(e.data('url'), function(data) {
    return $(document).replace(e, data);
  });
});

答案 1 :(得分:0)

如何从视图中删除部分青少年,最初只显示没有它的页面。然后使用javascript,对服务器进行AJAX调用。

您可以使用wiselinks来简化生活。