無限のページスクロールをアクティビティコントローラーで動作させようとしていますが、アイテムの最初のページを追加するだけです。代わりに次のページをロードする方法がわかりません。
アクティビティコントローラー
class ActivitiesController < ApplicationController
def index
params[:page] ||= 1
@activities = Activity.for_member(current_member, params)
end
end
活動モデル
class Activity < ActiveRecord::Base
belongs_to :member
belongs_to :targetable, polymorphic: true
self.per_page = 4
def self.for_member(member, options={})
options[:page] ||= 1
following_ids = member.following_members.map(&:id).push(member.id)
where("member_id in (?)", following_ids).
order("created_at desc").
page(options[:page])
end
end
エンドレスページjQuery
$(window).scroll(function(){
if ($(window).scrollTop() > $(document).height() - $(window).height() - 100){
$('.pagination').text("Loading more...");
$.getScript($('.pagination .next_page').attr('href'));
}
});
index.js.erb
$('#act_index').append('<%= j render ("activities/activities") %>');
$('.pagination').replaceWith('<%= j will_paginate(@activities) %>');
活動の一部
<% @activities.each do |activity| %>
<%= render partial: "activities/#{activity.targetable_type.underscore}/#{activity.action}",
locals: { activity: activity } %>
<% end %>