尝试关注railscast 114(无限页面),但似乎无法让我的页面更新。
当我查看我的Firebug时,看起来该页面正在对我要渲染的页面执行GET请求,但它不会显示在屏幕上。
我的javascript索引(index.js.erb)看起来像这样(feedboxes = div id):
page.insert_html :bottom, 'feedboxes', :partial => 'feeds', :collection => @feeds
if @feeds.total_pages > @feeds.current_page
page.call 'checkScroll'
end
我的家庭控制器看起来像这样
def index
@feeds = Feed.paginate(:page => params[:page], :per_page => 10)
respond_to do |format|
format.html
format.js
format.json
end
end
我的索引文件如下所示:
<div id="feedboxes">
<%= render :partial => 'feeds', :collection => @feeds%>
</div>
*注意,我必须将jQuery设置为noconflict-mode才能使prototype.js工作。这对我尝试将文本附加到页面有什么影响吗?我尝试在index.js.erb文件中执行一个简单的警报('hello')并且工作正常....
以下是检查滚动条并获取新页面的代码。
var currentPage = 1;
function checkScroll() {
if (nearBottomOfPage()) {
currentPage++;
new Ajax.Request('/home?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);