0

loadmore div をクリックすると、さらにコメントを読み込もうとしています。Loadmore をクリックすると、このコードは最初にレンダリングした値と同じ値をレンダリングします。

index.html.erb で

<div class="main-content"><%= render :partial => 'comment' %></div>
<div class="loadmore" onclick="send()">Loadmore</div>

_comment.html.erb で

 <% @comments.each do |comment| %>
 <%= comment.comments %>
 <%= end %>

私のコントローラーで

@comments = Comment.paginate(:per_page => 10, :page => params[:page]).all(:order => 'updated_at DESC')
respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @comments }
end

JavaScriptで

function send(){

     $.ajax({
        url: '<%= escape_javascript comments_path(:page =>(@comments.current_page)+1) %>',
        type: 'GET',
        dataType: 'json',           
        success: function(){                     
                 $(".main-content").append("<%= escape_javascript render :partial => 'comment' %>");
            }       
    });
}

コードが間違っている場合は、正しいコードを提案してください。

4

2 に答える 2

0

あなたの見解でこれを試すことができると思います:

<div class="main-content"><%= render :partial => 'comment' %></div>
<div class="loadmore" onclick="send()" id="loadmore_button" data-page="2">Loadmore</div>

その後、JavaScriptで現在のページを取得し、古い値を新しいページデータで更新する必要があります

function send(){
 var pager = $("#loadmore_button").data("page")
 $.ajax({
    url: '<%= escape_javascript comments_path %>?page='+pager,
    type: 'GET',
    dataType: 'json',           
    success: function(){                     
      $(".main-content").append("<%= escape_javascript render :partial => 'comment' %>");
      $("#loadmore_button").data("page", parseInt(pager)+1)
    }       
  });
} 
于 2013-10-29T13:43:38.860 に答える