jquery – 如何在rails中异步加载部分页面

前端之家收集整理的这篇文章主要介绍了jquery – 如何在rails中异步加载部分页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在rails / jquery应用程序中创建一个ruby时,页面的一部分是生成耗时的。

我想改变页面的加载方式,以便大部分的页面立即加载,并且占位符被保留用于耗时的部分以异步方式加载,并且在完成后被注入到具有ajax / jquery的页面中。

我现在(简化):

app / views / sample / show.html.erb:

<div id="theResult">
    <%= render :partial => 'calculate',:object => @org) %>
</div>

并且部分将使用一些部分@org来生成一些内容(击中另一个外部REST服务)。

app / views / sample / _calculate.html.erb

<%
    # code to take org and turn it into content
%>
<!--...html to display results here -->

我意识到这可能是破坏正确的MVC架构规则,因为我的部分似乎有太多的逻辑,并且想清理它…

所以我想我有两个问题在一起:(1)我该如何让这个工作,和(2)我应该如何清理它遵循良好的ruby / rails / mvc做法?

解决方法

首先在主要回应中放一个空的占位符div
<div id="pink-dancing-elephants"></div>

然后在该页面添加一点jQuery

$.ajax({
    url: "/elephants/dancing",cache: false,success: function(html){
      $("#pink-dancing-elephants").append(html);
    }
});

并且具有响应/大象/跳舞/粉红色的动作返回要填充的div的HTML块。在由AJAX请求调用的动作中,您将需要使用以下命令进行渲染:layout =>错误地保留返回的HTML包含整个框架。例如。

# elephants_controller.rb
def dancing
  @elephants = #whatever
  render :layout => false
end

这将使模板在views / elephants / dancing.html.erb中。

猜你在找的jQuery相关文章