使用javascript和rails添加文本

时间:2013-01-31 00:36:37

标签: javascript jquery ruby-on-rails pagination prototypejs

尝试关注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);

0 个答案:

没有答案