使用 Ajax 的 Rails Kaminari 分页

Posted

技术标签:

【中文标题】使用 Ajax 的 Rails Kaminari 分页【英文标题】:Rails Kaminari Pagination using Ajax 【发布时间】:2012-02-18 15:17:24 【问题描述】:

我在使用 Ajax 进行分页时遇到问题。我的视图代码寻找分页看起来像

= paginate @products, :remote => true

但是,AJAX 调用失败并显示错误状态代码,Web Inspector 显示如下所示

服务器日志显示

ERROR Errno::ECONNRESET: Connection reset by peer
/Users/user/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/httpserver.rb:56:in `eof?'
/Users/user/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/httpserver.rb:56:in `run'
/Users/user/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

有趣的是,如果我向同一页面添加一个超链接,例如

= link_to('Test', products_path(:page => 2), :remote => true)

链接看起来与 Kaminari 生成的链接完全相同,并且 Ajax 调用成功,没有任何问题。更有趣的是,如果我从

更改生成的分页链接
<a href="/brands/deborah-lippmann" data-remote="true" rel="prev">1</a>

<a href="/brands/deborah-lippmann" data-remote="true">1</a>

与AJAX无关,链接又可以正常使用了。

这与在 Kaminari 渲染链接之前发生的 jquery-ujs 魔术有关吗? Kaminari 使用 ActionView Extensions 和 ActionView Context 为分页链接生成标签?非常感谢您对此问题的任何帮助!

【问题讨论】:

您遇到的 javascript 错误是什么?它在application.js 的第7951 行显示undefined...如果服务器没有收到请求,那么它一定是javascript 问题。 控制台中没有 javascript 错误。 application.js 的第 7951 行实际上是 jquery,它“如果浏览器可以提供 xhr,则创建传输”,实际代码是 gist.github.com/dc87f34e1523a511fae7 服务器日志中包含的就是这些吗?你能看到导致错误的请求是什么吗? 你的布局中有 吗?看到这个slideshare.net/adamlogic/jquery-and-rails-sitting-in-a-tree 也许这可以帮助你..***.com/questions/6134028/… 【参考方案1】:

Chek /app/views/layouts/application.html.erb 用于下一行

<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>

【讨论】:

以上是关于使用 Ajax 的 Rails Kaminari 分页的主要内容,如果未能解决你的问题,请参考以下文章

使用 Kaminari gem 进行 Ajax 分页

kaminari ajax 分页不更新分页

Rails 3 分页,will_paginate 与 Kaminari

Rails Pagination - 从实例 id 中查找页码

分页破坏了 RSpec 测试(Kaminari)

ruby kaminari + JSON API分页助手