加载更多重复相同的值

时间:2013-10-29 08:19:50

标签: javascript jquery ruby-on-rails ajax

点击loadmore div时,我正在尝试加载更多评论。当我点击Loadmore时,这段代码呈现的是我最初渲染的相同值。例如,如果我最初渲染10条评论,当我点击加载更多时,它会渲染相同的10条评论。

在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' %>");
            }       
    });
}

如果代码错误,建议我使用正确的代码。

2 个答案:

答案 0 :(得分:0)

每次点击按钮时,params[:page]都不会更新,您需要在每次传递params[:page]之前重新设置offset值来重置{{1}}

答案 1 :(得分: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)
    }       
  });
}