2011-04-01 177 views
4

我在rails3中使用kaminari gem實現分頁。kaminari ajax分頁沒有更新頁面

我一直在關注這個代碼從GitHub https://github.com/amatsuda/kaminari_example/commits/ajax

不幸的是,下面的代碼

 
jQuery('#paginator').html('<%= escape_javascript(paginate(@recipes,:remote=>true).to_s) %>'); 

似乎並不奏效。

我適合做什麼什麼用戶選擇了一個頁面的JavaScript是

 
    jQuery('a','nav.pagination').click(function(){ 
     // get the page value from href 
      var page = jQuery(this).attr('href').replace('/home/index?page=',''); 
      jQuery.getJSON('?page='+page, function(data){ 
       for (var r in data){ 
        results.push(data[r]); 
      }); 
       showResults(results,(page-1)*10); 
       jQuery('#paginator').html('<%= escape_javascript(paginate(@recipes,:remote=>true).to_s) %>'); 
    }); 

的showResults功能通過JSON運行,並創建一組HTML元素。 一切都工作得很好,除了分頁沒有更新顯示結果重新加載時的當前頁面。

我沒有得到在Firebug的任何錯誤,我使用Rails 3紅寶石192

回答

1

你確定你有你的HTML分頁程序「#paginator」元素? 我的意思是,下面的代碼是否返回Firebug上的元素?

jQuery('#paginator') 
+0

是的,螢火蟲發現id ='paginator'沒問題。不知道爲什麼這不起作用。儘管我正在考慮用滑塊替換「分頁鏈接」,所以我可能不擔心它。 – pedalpete 2011-04-06 17:07:19

0

爲了更新結果和分頁,您需要一次更新兩者。 Paginate AJAX發送一個請求作爲JS,所以爲了處理它們,你應該在view文件夾中有action.js.erb文件。在這裏執行兩件事。

1)更新結果

$("#issues").html("<%= j render(:partial => 'recipes') %>"); 

2)更新PAGINATE

$('.pagination').html('<%= escape_javascript(paginate(@recipes, :remote => true).to_s) %>'); 

查找相應頁面屬性來更新PAGINATE。這將更新結果和分頁運行時間。