rails通过ajax运行第一个查询(加载视图后)

时间:2011-08-03 13:22:01

标签: ruby-on-rails ruby ajax ruby-on-rails-3 pagination

我在ajax上设置了分页+参数,并且工作正常。

但是,首次加载页面时,需要一段时间。是否可以首先加载视图,然后通过ajax加载内容(就像点击第2页对于ajax的分页一样)?

EDIT /

使用参数条件是否真的很愚蠢?就像我的控制器周围的查询if params[:load] == "ajax"以及使用此数据的视图部分一样。在jquery中,当文档准备就绪(视图已加载)时,使用get:$.getScript(window.location.pathname + "?load=ajax"); ???

调用参数

2 个答案:

答案 0 :(得分:2)

我做了很多。首先加载整个视图,其中包含一些基本布局,然后使用ajax加载实际的重要内容。所以在我的控制器中:

class PriceController < ApplicationController

  def price
    # do something in order to render the page price.html
  end

  def price_f
   # render the partial which contains heavy sorting of datas
   render :partial => "price_f"
  end

end
在jquery中

$(document).ready(function(){
  $.ajax({
    url : "/price_f.html?page=1"
    success: function(data){
       $("#price_container").html(data);
    }
  });
})

答案 1 :(得分:0)

假设你正在使用jQuery,你应该能够在文档准备好之后做一些这样简单的事情。实际上,你所做的只是告诉你的分页网址你想要的第1页而不是第2页等。

$(document).ready(function(){
  $.get({
    url: "/url/for/your/page/data"
  });
});

要摆脱当前的初始页面加载(我必须看到您的具体代码,以告诉您确切删除/更改的内容):

  1. 删除控制器中执行查询的任何代码,加载数据等。
  2. 删除视图中随后使用此初始数据的部分,可能只是在其中粘贴一个加载gif,直到它被您的ajax数据替换。
  3. 触发ajax请求 - 在等待控制器对数据进行排序和传递时,将加载该页面。