Rails 3.0如何创建无尽的页面?

时间:2012-02-27 18:14:34

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

我正在尝试创建一个无穷无尽的页面。

本教程后:http://railscasts.com/episodes/114-endless-page?view=comments

在我的控制器中我有:

def index
@konkurrencer = Konkurrencer.find(:all).paginate(:page => params[:page], :per_page => 2)
    respond_to do |format|
        format.html 
        format.js { render :rjs => @konkurrencer }
      end
end

在我看来,我有:

<% @konkurrencer.each do |kon| %>
<%= render :partial => 'konkurrencers/konkurrencer', :locals => { :kon => kon } %>
<% end %>

我的index.js.rjs:

page.insert_html :bottom, :konkurrencer, :partial => 'konkurrencers/konkurrencer'
if @konkurrencer.total_pages > @konkurrencer.current_page
  page.call 'checkScroll'
else
  page[:loading].hide
end

在我的标题中我这个javascript:

<%= javascript_include_tag 'jquery', 'endless' %>

和endless.js:

var currentPage = 1;

function checkScroll() {
  if (nearBottomOfPage()) {
    currentPage++;
    new Ajax.Request('/konkurrencer.js?page=' + currentPage, {asynchronous:true, evalScripts:true, method:'get'});
  } else {
    setTimeout("checkScroll()", 250);
  }
}

function nearBottomOfPage() {
  return scrollDistanceFromBottom() < 150;
}

function scrollDistanceFromBottom(argument) {
  return pageHeight() - (window.pageYOffset + self.innerHeight);
}

function pageHeight() {
  return Math.max(document.body.scrollHeight, document.body.offsetHeight);
}

document.observe('dom:loaded', checkScroll);

没有进行任何ajax调用。应该将index.js.rjs移动到index.js.erb?或者是因为我没有包含默认的javascript?

1 个答案:

答案 0 :(得分:1)

不,我认为你的块响应js的问题。如果你想要它渲染index.js.rjs,那么你应该能够说:

def index
  @konkurrencer = Konkurrencer.find(:all).paginate(:page => params[:page], :per_page => 2)
  respond_to do |format|
    format.html
    format.js
  end
end

那应该找一个名为index.js.SOMEFORMAT的文件。我不相信你的:rjs =&gt; @koncurrencer实际上正在工作,我打赌如果你查看你的浏览器流量,你只会看到服务器因为错误而返回500.