2013-05-07 24 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(); 

等到目前为止,如果我错了,请纠正我,谢谢。