2013-10-29 46 views
0

我試圖加載更多的評論,當點擊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' %>"); 
      }  
    }); 
} 

如果代碼錯了,建議我輸入正確的代碼。

+0

我假設@ comments.current_page在你點擊按鈕時執行,所以它檢查頁面參數,它仍然是相同的,它是空的。嘗試在每次單擊按鈕時更新div#loadmore屬性中的數據頁屬性 –

+0

但是我的頁面參數傳遞爲2,我的日誌中的查詢形式也是正確的,但它附加了相同的值 –

+0

可以顯示實際參數發送到服務器和SQL查詢執行,當你點擊按鈕? –

回答

0

params[:page]不更新每次按下按鈕時,你需要給它傳遞

+0

params [:page]正在重置,因爲我在我的日誌中的查詢形成是正確的 –

+0

如果這是您的查詢我認爲它應該可以正常工作'SELECT「comments」。* FROM「comments」ORDER BY updated_at DESC LIMIT 10 OFFSET 10'。您是否可以在每次點擊loadmore時檢查查詢,並查看在查詢中設置的「偏移量」的值。 –

+0

我得到的每個點擊都有相同的參數和相同的查詢,並呈現相同的值。 –

0

我說你可以在你的視圖嘗試此之前,你params[:page]與每次添加offset值將其重置:

<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) 
    }  
    }); 
} 
+0

沒有改進,再次獲得相同。 –

+0

請在服務器端給params和SQL參數 –

+0

'參數:{「page」=>「2」}','SELECT「comments」。* FROM「comments」ORDER BY updated_at DESC LIMIT 10 OFFSET 10' –