**更新:有趣的是,ajax确实请求下一页,我可以在我的分页中突出显示分页中的下一页,但它没有显示在下一页的内容,它仍然显示第一页。但是,如果我在分页中单击第二页,则会显示第二页内容。似乎我在JS中获取数据而不是HTML,就像我的应用程序最初加载数据时那样。我尝试在我的控制器中包含一个HTML的respond_to,但这并没有解决我的问题。
我正在使用will_paginate在我的rails应用程序中对我的链接进行分页。我现在正试图用will_paginate实现无限滚动。
will_paginate文档指出您在分页的集合中获得了total_pages
和next_page
方法。
鉴于我的分页适用于链接,我不知道为什么我的代码中出现undefined method total_pages
错误。
ActionView::Template::Error (undefined method `total_pages' for 3:Fixnum):
1: $('#link').append('<%= j render(@links) %>');
2: $('.pagination').replaceWith('<%= j will_paginate(@links.next_page) %>');
app/views/links/index.js.erb:2:in `_app_views_links_index_js_erb___2850832044435264001_70232955578600'
这是我的控制器索引操作:
class LinksController < ApplicationController
before_filter :authenticate_user!, except: [:index, :show]
def index
@links = Link.order(cached_votes_score: :desc).paginate(page: params[:page], per_page: 5)
end
end
index.js.erb(似乎正在发生错误):
$('#link').append('<%= j render(@links) %>');
$('.pagination').replaceWith('<%= j will_paginate(@links.next_page) %>');
link.js.coffee:
jQuery ->
$(window).scroll ->
if $(window).scrollTop() > $(document).height() - $(window).height() - 50
$.getScript($('.pagination a.next_page').attr('href'))
链接部分_link.html.erb:
<!-- order links based on total number of votes -->
<% @links.each do |link| %>
<div class="link row clearfix">
<h2>
<%= image_tag link.avatar_url(:thumb).to_s %>
</h2>
<h2>
<%= link_to link.title, link %><br>
</h2>
<p>
<%= link_to link.url, link %><br>
</p>
<!-- acts_as_votable for like_link -->
<div class="btn-group">
<%= link_to like_link_path(link), method: :put, class: "btn btn-default btn-sm" do %>
<span class="glyphicon glyphicon-chevron-up"></span>
Upvote
<%= link.get_upvotes.size %>
<% end %>
<%= link_to dislike_link_path(link), method: :put, class: "btn btn-default btn-sm" do %>
<span class="glyphicon glyphicon-chevron-down">
Downvote
<%= link.get_downvotes.size %>
<% end %>
</div>
</div>
<% end %>
<% unless @links.empty? %>
<%= will_paginate @links %>
<% end %>
如果您可以提供任何非常感激的见解,或者如果您对项目代码有疑问,那么这可能会触发我无法想到的事情,或者我可以提供帮助你救了我。
我已经查看了类似问题的其他答案但无济于事。
答案 0 :(得分:0)
错误来自这里:
j will_paginate(@links.next_page)
@links.next_page is an integer