如何使用ajax加载慢速页面的部分以加速在rails中加载

时间:2011-07-14 09:47:06

标签: ruby-on-rails ajax

我正在使用rails 2.3。我想通过ajax加载一些页面的一些慢查询来加速页面加载。实施例

<div id="count-projects"><%= Project.count%></div>
...
<div id="some-stuff"><%= User.count %> users and <%= Book.count%> books</div>

我想重写上面的代码,以便有两个ajax请求,其响应被放入div中,带有'count-projects'和'some-stuff'

2 个答案:

答案 0 :(得分:1)

首先,您必须创建一个服务器端脚本,例如返回一个JSON数组

[
    {"name":"first project", "href":"abc.php"},
    {"name": "second project", "href":"def.php"}
]

当您通过URL请求它时(?action = getProjects将是一个好名字)。然后我建议使用jQuery请求。它将使您能够使用以下代码

$.getJSON(url, {action:'getProject'}, function(json){
    $.each(json, function(i, project) {
        $('div#count-projects').append('<a href="' + project.href + '">' + project.name + '</a>');
    });
});

然后,这将从服务器获取JSON数据(由Ruby从数据库创建),并创建指向您的特定解决方案所需的每个项目等的链接列表。

答案 1 :(得分:0)

我使用jquery的ajax解决了它并加载了如下函数:

jQuery.ajax({url: "/controller/action_1", 
            success: function(data){
            jQuery("#some_id").html(data);
            }});
jQuery("#some-other-id").load("/controller/action_2");

另外,partials views / controller / action_1.html.haml和views / controller / action_2.html.haml用于生成元素#some_id和#some-other-id的内部html。