我有两个课程:Posts
和Comments
,其中有has_many :comments
个帖子和comments belongs_to post
。
我的每个帖子都有一个显示页面,其中包含评论列表,我想对评论进行分页。使用我当前的代码,我将显示所有页面上所有注释的列表。所以,如果我有10条评论,并且我希望每页有2条评论,那么我会得到5页,其中包含最初的10条评论。有人可以解释一下吗?
我的代码:
Posts controller:
def show
@post = Post.find(params[:id])
@comments = @post.comments.page(params[:page]).per(3)
respond_to do |format|
format.html # show.html.erb
format.json { render json: @post }
end
end
"Show" views:
<%= paginate @comments %>
<% @post.comments.each_with_index do |comments, index| %>
<tr>
<td><%= index+1 %></td>
<td><%= comment.date %></td>
<td><%= comment.text %></td>
</tr>
<% end %>
</table>
答案 0 :(得分:1)
您需要在视图中使用分页对象,而不是从数据库中获取它们:
<% @comments.each_with_index do |comments, index| %>
<tr>
<td><%= index+1 %></td>
<td><%= comment.date %></td>
<td><%= comment.text %></td>
</tr>
<% end %>
这让他们变得新鲜,没有任何意义:
@post.comments