【问题标题】:jQuery Endless page with will_paginate not working in Rails带有 will_paginate 的 jQuery Endless 页面在 Rails 中不起作用
【发布时间】:2013-12-09 14:26:49
【问题描述】:

我正在尝试实现 Railscasts 第 114 集中显示的无限页面功能。分页效果很好,但根本没有触发无限页面功能。我没有看到任何错误;只是分页,好像我没有添加无尽的页面 javascript。我的代码:

活动控制器

class ActivitiesController < ApplicationController
    before_filter :authenticate_user!
  def index
    @activities = PublicActivity::Activity.order("created_at DESC").where(owner_type: "User", owner_id: current_user.followed_users.map {|u| u.id}).page(params[:page]).per_page(15)
    @post = current_user.posts.build

     respond_to do |format|
      format.html
      format.json
      format.js 
    end
  end
end

activities.js.coffee

jQuery ->
  if $('.pagination').length
    $(window).scroll ->
      url = $('.pagination .next_page').attr('href')
      if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
        $('.pagination').text("Loading more activities...")
        $.getScript(url)
    $(window).scroll()

index.js.erb

$('#activities').append('<%= j render ('shared/activities') %>');
<% if @activities.next_page %>
  $('.pagination').replaceWith('<%= j will_paginate('shared/activities') %>');
<% else %>
  $('.pagination').remove();
<% end %>
<% sleep 1 %>

shared/_activities.html.erb

<div class="activities">
<% @activities.each do |activity| %>
<code>
<% end %>
<%= will_paginate @activities %>
</div>

问题一定出在 javascript 上,但我想不通。关于什么可能导致问题的任何想法?

谢谢! -b

【问题讨论】:

    标签: javascript jquery ruby-on-rails-3 coffeescript will-paginate


    【解决方案1】:

    我设法在 Rails 4 中没有“index.js.erb”文件的情况下做到了。只需添加这个咖啡脚本:

    $(window).on 'scroll', ->
      if $('.pagination').length
        @url = $('.pagination .next_page').attr('href')
        if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
          $('.pagination').remove()
          $('#articles').append('<div>')
          $('#articles div').last().load @url+' #articles', ->
              if $('.next_page.disabled').length
                $('.pagination').remove()
    

    这会加载下一页,然后使用新加载的页面上的分页,直到没有更多的下一页。只需将“#articles”替换为脚本中容器的 ID。跳过 index.js.erb 和 respond_to jazz。

    【讨论】:

      【解决方案2】:

      这里是我的代码中的相关文件,其中我有无穷无尽的页面处理分页。希望您能从下面找出您的具体解决方案:

      我的 index.js.erb 文件

       $('.carousel').append("<%= j render ('shared/recentlyadded') %>");
      <% if @recently_added_video.next_page %>
        $('.pagination').replaceWith("<%= j will_paginate(@recently_added_video) %>");
      <% else %>
        $('.pagination').remove();
      <% end %>
      

      我的 index.html.erb 文件

        <div class="carousel"><%= render partial: 'shared/recentlyadded' %></div>
        <%= will_paginate @recently_added_video %>
      

      我的 _recentlyadded.html.erb 文件

       <ul class="jcarousel-skin-recent">
          <% @recently_added_video.each do |v| %>
            <li>
            <code>
            </li>
          <% end %> 
        </ul> 
      
      <script type="text/javascript">
          jQuery(document).ready(function () {
              jQuery('.jcarousel-skin-recent').jcarousel({
                  wrap:'both',
                  animation:'slow'
              });
          });
      </script>
      

      我的 javascript 文件

      jQuery ->
      
        if $('.pagination').length
          $(window).scroll ->
            url = $('.pagination .next_page').attr('href')
            if url && $(window).scrollTop() > $(document).height() - $(window).height() - 225
              $('.pagination').text("...")
              $.getScript(url)
          $(window).scroll()
      

      【讨论】:

        猜你喜欢
        • 2015-07-22
        • 1970-01-01
        • 1970-01-01
        • 2022-08-16
        • 2013-09-22
        • 1970-01-01
        • 2017-02-02
        • 1970-01-01
        • 2020-04-28
        相关资源
        最近更新 更多