我如何让will_paginate使用ajax?

时间:2013-05-07 19:16:16

标签: ruby-on-rails ajax will-paginate paginate

到目前为止,我已经遵循了一些没有运气的教程。我正在使用ajax_pagination。当我单击第二页的链接时,这就是服务器日志所说的内容:     在2013-05-07 14:05:49-0500开始获取127.0.0.1的GET“/?page = 2& = 1367953277288”     由AddressesController #index处理为JS     参数:{“page”=>“2”,“”=>“1367953277288”}     地址加载(0.9ms)SELECT“地址”。* FROM“地址”LIMIT 5 OFFSET 5     渲染地址/ _addresses.html.erb(6.7ms)     渲染地址/ index.html.erb(8.4ms)     在10ms完成200 OK(浏览次数:9.0ms | ActiveRecord:0.9ms)

因此看起来请求是正确的,但页面上没有任何变化。这是我的部分_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 =&gt; “page”,:render =&gt; “地址”

索引视图:      &lt;%= ajax_section:id =&gt; 'page',:render =&gt; '地址'%&gt;

这不是我的所有代码,而是相关的部分。

1 个答案:

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

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