2

目前,我在模板中有一个 each 循环,用于显示评论。假设用户对他们发布的微博有 50 条评论。将显示一个包含 50 条评论的长列表。

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

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

如果我走 jquery/js 路线并使其仅显示 2-3 条最新消息,其他消息仍将被加载到后端,难道不是更好的选择是在 ruby​​ on rails 中控制它不知何故?

我真的很想要一些关于最佳方式的不错的解决方案/信息。

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

谢谢亲切的问候

4

3 回答 3

2

你可以像 Facebook 一样:

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

在 Facebook 上,您一次不能加载超过 50 条评论。我认为你也应该这样做。

于 2012-04-16T12:36:07.960 回答
0

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

路线:

resources :posts do
  resources :comments
end

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

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' %>

并且您还想将偏移量绑定到 ajax 帖子:

$ ->
  $('#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.

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

于 2012-04-16T13:02:42.393 回答
0

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

于 2012-04-16T12:55:03.533 回答