0

通知モデルの新しい動作があり、状況が乱雑になり始めたので、<% = render @other_notifications %>からnotifcations/_notification.html.erbにリファクタリングしました。各パーシャルのレールがページされます

私の問題は次のとおりです。ページはすべてうまくレンダリングされますが、ページネーションは正しく機能しません。したがって、以下の構造を持っていて_notification.html.erbを削除しないと、ページには新しいアクションパーシャルがロードされ、ページ分割オブジェクトには_notification.html.erbがロードされます。 _notification.html.erbを削除しても、ページにはまだ新しい部分データがロードされますが、ページネーションは機能しません。この作業をするためにページ分割をどのように変更する必要がありますか?

def other_notifications 
    @other_notifications = current_user.notifications.not_chat.order(created_at: :desc).includes(:sender_profile). 
         paginate(page: params[:page], per_page: Notification.pagination_per_page) 
    current_user.reset_new_other_notifications 
    respond_to do |format| 
    format.html 
    format.js 
    end 
end 

other_notifications.html.erb

<div class = "other-notifications-index"> 
    <% @other_notifications.each do |notification| %> 
    <% if lookup_context.template_exists?(notification.action, "notifications/actions", true) %> 
     <%= render partial: "notifications/actions/#{notification.action}", locals: { notification: notification } %> 
    <% end %> 
    <% end %> 
</div> 
<div id="infinite-othernotification-scrolling"> 
    <%= will_paginate @other_notifications %> 
</div> 

other_notifications.js.erb

$('.other-notifications-index').append('<%= j render @other_notifications %>'); 
<% if @other_notifications.next_page %> 
    $('.pagination').replaceWith('<%= j will_paginate @other_notifications %>'); 
<% else %> 
    $(window).off('scroll'); 
    $('.pagination').remove(); 
    $('.no-more').delay(1000).fadeIn(1500); 
<% end %> 

答えて

0

notifications_controller.rb

私はこのようにそれを解決しました。だからページ区切りは、次のコードで常に見つかる_notification部分を探し、_notification部分は残りの部分を呼び出します。

<% if lookup_context.template_exists?(notification.action, "notifications/actions", true) %> 
    <%= render partial: "notifications/actions/#{notification.action}", locals: { notification: notification } %> 
<% end %> 
_notification.html.erb

other_notifications.html.erb

<%= render @other_notifications %> 
<%= will_paginate @other_notifications %> 

関連する問題