首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何第一次显示3个记录,然后使用will_paginate记录下一个请求

如何第一次显示3个记录,然后使用will_paginate记录下一个请求
EN

Stack Overflow用户
提问于 2013-11-28 03:11:50
回答 2查看 217关注 0票数 0

我在我的rails应用程序中使用了will_paginate gem,在我的文章中我有评论,所以当用户第一次显示一篇文章时,他只需3条第一条评论就可以看到这篇文章,然后如果他单击一个显示更多的链接(这是一个远程链接/“ajax”),他将看到接下来的8个注释,我尝试使用

在我的文章中,我呈现了一个显示评论的部分,如下所示:

代码语言:javascript
运行
复制
= render partial: "shared/comments", collection: article.comments.paginate(page: params[:page], per_page: 3)  # i use paginate to show just 3 comments
= link_to 'Show more', article_comments_path(article.id, :page => 2), :remote => true

如果用户单击“显示更多”链接,ajax请求将触发注释控制器中的“我的索引操作”(我想在这里显示下面的8个元素):

代码语言:javascript
运行
复制
def index
  @comments = @commentable.comments.paginate(page: params[:page], per_page: 8)
end

但是它不能正常工作,当我第一次单击“显示更多”时,它跳过了5个元素(8-3),然后显示了接下来的8个元素。

有办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-28 15:58:37

在呈现第2页的记录之前,我通过检索will_paginate跳过的5条记录来解决我的问题。

在我的index.js.erb中:

代码语言:javascript
运行
复制
<% if @comments.current_page == 2  %>
    <% @x = @commentable.comments.offset(3).limit(2) # get the 5 skipped records %> 
<% else %>
    <% @x = "" %>
<% end %>

$("div#comments").append("<%= escape_javascript(render partial: 'shared/comments', collection: @x) %>")
$("div#comments").append("<%= escape_javascript(render partial: 'shared/comments', collection: @comments) %>")

如果你有其他的建议,我会感激的:)

票数 0
EN

Stack Overflow用户

发布于 2013-11-28 04:16:52

我不确定您的index操作是否也用于其他地方,但您可以尝试:

代码语言:javascript
运行
复制
def index
  @comments = @commentable.comments.offset(3).paginate(page: params[:page], per_page: 8)
end

您的链接应该呈现第1页:

代码语言:javascript
运行
复制
= link_to 'Show more', article_comments_path(article.id, :page => 1), :remote => true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20257053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档