will_paginate未定义的方法' total_pages'在rails应用程序中的ajax请求

时间:2015-12-29 19:12:41

标签: jquery ruby-on-rails ajax pagination

**更新:有趣的是,ajax确实请求下一页,我可以在我的分页中突出显示分页中的下一页,但它没有显示在下一页的内容,它仍然显示第一页。但是,如果我在分页中单击第二页,则会显示第二页内容。似乎我在JS中获取数据而不是HTML,就像我的应用程序最初加载数据时那样。我尝试在我的控制器中包含一个HTML的respond_to,但这并没有解决我的问题。

我正在使用will_paginate在我的rails应用程序中对我的链接进行分页。我现在正试图用will_paginate实现无限滚动。

will_paginate文档指出您在分页的集合中获得了total_pagesnext_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 %>

如果您可以提供任何非常感激的见解,或者如果您对项目代码有疑问,那么这可能会触发我无法想到的事情,或者我可以提供帮助你救了我。

我已经查看了类似问题的其他答案但无济于事。

1 个答案:

答案 0 :(得分:0)

错误来自这里:

j will_paginate(@links.next_page)

@links.next_page is an integer