限制向用户显示的评论数量的好方法是什么,直到他们选择查看全部?

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

为了节省页面空间,我决定将每个微博的评论限制为2-3。 如果用户希望查看更多内容,则可以单击“查看更多”或“查看全部”。 我想知道服务器如何应对如果有10,000条评论和用户点击“查看全部”这就是为什么我可以选择实施“查看更多”然后再显示50条评论“

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

如果我去jquery / js路由并且这样做只有2-3个最新的消息被显示,其他的仍然被加载回来结束不会他们所以不会更好的选择是在ruby on rails上控制它不知何故?

我真的很喜欢一些很好的解决方案/信息,以最好的方式来做到这一点。

您需要的任何进一步信息我很乐意提供。

谢谢亲切的问候

你可以像Facebook一样:

  • 仅显示2/3条评论。 仅从后端加载2/3条评论。
  • 当用户点击“显示更多”时,它会显示50个以上。 它通过AJAX加载它们。 所以在后端你只会得到一个“GET 50评论除了三个第一”的请求。
  • 显示另一个“显示更多”链接。 它将加载50个其他评论,除了53个第一。

在Facebook上,您不能同时加载超过50条评论。 我想你应该这样做。

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

我想PostComment之间有一个简单的belongs_tohas_many关系。 我通常会这样做:

路线:

 resources :posts do resources :comments end 

model:设置默认页面大小:

 class Comments < ActiveRecord::Base belongs_to :post DEFAULT_PAGE_SIZE = 25 end 

控制器:

 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加载评论:

 <%= link_to "load more comments", post_comments_path(@post, :format => 'js'), :method => :get, :remote=>true id='load-more-comments' %> 

并且您还想将偏移量绑定到ajaxpost:

 $ -> $('#load-more-comments').on 'ajax:before', (event) -> el = $(this) offset = #count your offset, I often do by counting the 
  • s already in the
      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.
  • 我也有兴趣了解更好的方法。 期待着答案和批评。 🙂