2013-05-07 66 views
0

到目前爲止,我已經遵循了幾個教程而沒有運氣。我正在使用ajax_pagination。當我點擊第二頁的鏈接時,這就是服務器日誌所示: 已啓動GET「/?page = 2 & = 1367953277288」for 127.0.0.1 at 2013-05-07 14:05:49-0500
AddressController#index as JS 參數:{「page」=>「2」,「
」=>「1367953277288」} 地址加載(0.9ms)SELECT「addresses」。* FROM「addresses」LIMIT 5 OFFSET 5個 渲染地址/ _addresses.html.erb(6.7ms) 渲染地址/ index.html.erb(8.4ms) 完成200 OK在10毫秒(瀏覽次數:9.0ms | ActiveRecord的:0.9ms)我怎樣才能得到will_paginate使用Ajax?

所以似乎請求是正確的,但是呃網頁上沒有任何變化。這是我的用於部分_addresses代碼:

<%= ajax_loadzone do %> 
<% @addresses.each do |address| %> 
blah blah 
<%end%> 

<%= ajax_links :section_id => 'page' do %> 
<%= will_paginate @addresses %> 
<% end %> 

控制器: ajax_respond格式,:SECTION_ID => 「網頁」,:渲染=> 「地址」

索引視圖: <%= ajax_section: id =>'page',:render =>'addresses'%>

這不是我所有的代碼,而是相關的位。

+0

我也在同樣的問題上掙扎,你使用了什麼資源? Railscast我的,我遵循這一步,但在我的應用程序的那一步,可以按照瑞安貝茨所說的。在我的代碼和他的代碼上的不同是'開'('live'被棄用,我們知道它),js在'pagination.js'和我的'application.js' :( – ksugiarto 2013-07-19 04:31:21

回答

0

請CMIIW,我找到了解決方案,通過設置jQuery分頁,同時重新渲染我們想要渲染的部分。

application.js

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 
}) 

$.fn.ajaxPagination = function() { 
    this.on("click", function() { 
    $.get(this.href, null, null, "script"); 
    return false; 
    }); 
} 

$(document).ready(function() { 
    $(".pagination a").ajaxPagination(); 
}) 

controller

def index 
    @addresses = Address.pagination(params[:page]) 

    respond_to do |format| 
    format.html # index.html.erb 
    format.json { render json: @order_requests } 
    format.js 
    end 
end 

model

def self.pagination(page) 
    paginate(:per_page => 5, :page => page) 
end 

在假設index.js.erb

$('#page').html("<%= escape_javascript(render('addresses')) %>"); 
$(".pagination a").ajaxPagination(); 

等到目前爲止,如果我錯了,請糾正我,謝謝。