使用 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 分页的主要内容,如果未能解决你的问题,请参考以下文章
Rails 3 分页,will_paginate 与 Kaminari