首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在用户选择查看所有评论之前,限制显示给用户的评论数量的好方法是什么?

在用户选择查看所有评论之前,限制显示给用户的评论数量的好方法是什么?
EN

Stack Overflow用户
提问于 2012-04-16 12:32:08
回答 3查看 349关注 0票数 2

目前,我在模板中有一个显示注释的每个循环。假设用户在他们发布的微博上有50条评论。将显示一个显示50个评论的长列表。

为了节省页面上的空间,我决定将显示的评论限制在每个微博上2-3条。如果用户希望查看更多内容,可以单击“查看更多”或“查看全部”。我想知道,如果有大约10,000个注释,用户单击“全部视图”,服务器将如何处理,这就是为什么我可能选择实现“查看更多”,然后显示更多的评论。

无论如何,我想知道一个很好的方法来限制显示给用户的评论数量,直到他们选择查看所有的

如果我走jquery/js路线,只显示最近的2-3条消息,其他消息就会被加载到后端,难道不是一个更好的选择,在rails中控制它吗?

我真的很想要一些好的解决方案/信息,关于最好的方法来做这件事。

如果你需要更多的信息,我很乐意提供。

谢谢亲切的问候

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-16 12:36:07

你可以像Facebook一样:

  • 只显示2/3的注释。只从后端加载2/3的注释。
  • 当用户单击“shows”时,它会显示50多个注释。它通过AJAX加载它们。因此,在后端,您只得到一个请求,如“获取50条评论,除了三个firsts".
  • Another”显示更多“链接显示。除了53个第一,它还将加载50个其他评论。

在Facebook上,你不能一次加载超过50条评论。我觉得你也该这么做。

票数 2
EN

Stack Overflow用户

发布于 2012-04-16 12:55:03

干净的方法是实现对评论的分页。

票数 0
EN

Stack Overflow用户

发布于 2012-04-16 13:02:42

我认为在belongs_toComment之间有一个简单的PostComment关系。我通常会:

路线:

代码语言:javascript
运行
复制
resources :posts do
  resources :comments
end

模型:设置默认页面大小:

代码语言:javascript
运行
复制
class Comments < ActiveRecord::Base
  belongs_to :post

  DEFAULT_PAGE_SIZE = 25
end

主计长:

代码语言:javascript
运行
复制
class CommentsController
  def index
    post = Post.find(params[:post_id])
    offset = params[:offset] || 0
    limit = params[:limit] || Comment::DEFAULT_PAGE_SIZE
    @comments = post.comments.offset(offset).limit(limit)

    respond_to do |format|
      #respond as you like
    end
  end

  # more actions...
end

视图中,加载更多的链接,例如,通过ajax加载注释:

代码语言:javascript
运行
复制
<%= link_to "load more comments", post_comments_path(@post, :format => 'js'), :method => :get, :remote=>true id='load-more-comments' %>

您还希望将偏移量绑定到ajax post:

代码语言:javascript
运行
复制
$ ->
  $('#load-more-comments').on 'ajax:before', (event) ->
    el = $(this)
    offset = #count your offset, I often do by counting the <li>s already in the <ul>
    el.data 'params', "offset=#{offset}"
    # you could also pass the limit: el.data 'params', "offset=#{offset}&limit=#{some limit}"
  .on 'ajax:complete', (event, xhr, status) ->
    el = $(this)
    el.removeData 'params' # remember to remove this.

我也对做这件事的更好的方法感兴趣。期待着答案和批评。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10174127

复制
相关文章

相似问题

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