目前,模板中的每个循环都显示注释的位置。假设用户对他们发布的微博有50条评论。将显示一个显示50条评论的长列表。
为了节省页面空间,我决定将每个微博的评论限制为2-3。如果用户希望查看更多内容,可以单击“查看更多”或“查看全部”。我想知道服务器如何应对如果有10,000条评论和用户点击“查看全部”这就是为什么我可以选择实施“查看更多”然后再显示50条评论“
无论如何,我想知道一种很好的方法来限制向用户显示的评论数量,直到他们选择查看全部内容?
如果我去了jquery / js路由并且这样做只有2-3条最新消息被显示,其他消息仍然被加载回来结束它们不会因此不是更好的选择来控制它ruby on rails有些怎么样?
我真的很喜欢一些很好的解决方案/信息来实现这一目标。
您需要的任何其他信息我很乐意提供。
由于 亲切的问候
答案 0 :(得分:2)
你可以像Facebook一样:
在Facebook上,您不能同时加载超过50条评论。我想你也应该这样做。
答案 1 :(得分:0)
干净的方法是为评论实施分页。
答案 2 :(得分:0)
我认为belongs_to
和has_many
之间存在简单的Post
和Comment
关系。我通常会这样做:
路线:
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.
我也对更好的方法感兴趣。期待着答案和批评。 :)