【问题标题】:Paginate Comments With will_paginate使用 will_paginate 对评论进行分页
【发布时间】:2014-02-14 04:54:21
【问题描述】:

我正在使用will_paginate gem,目前有一个已经分页的列表。

@businesses = Business.paginate(:page => params[:page], :per_page => 7)

<%= will_paginate @businesses %>

<% @businesses.each do |business| %>

要显示我使用的特定条目的 cmets:

<% @business.comments.each do |comment| %>

我认为类似以下的方法可能有效,但它没有:

@business.comments = Business.comments.paginate(:page => params[:page], :per_page => 7)

<%= will_paginate @business.comments %>

我似乎找不到任何对 cme​​ts 进行分页的答案(99.9% 肯定这与它是 @something.something 而不仅仅是 @something 有关)

【问题讨论】:

  • 您确定您使用的是Business.comments.paginate 而不是@business.comments.paginate

标签: ruby-on-rails pagination


【解决方案1】:

设置@business.comments 不仅不起作用,而且实际上是危险和破坏性的。您正在将与业务关联的 cmets 设置为该分页调用返回的 cmets。 (检查将@business.comments 设置为分页调用时日志显示的内容。

但是,您的电话是正确的。您只需将其设置为不同的变量,而不是重复使用@business.comments。如果您改用@cmets,它将正常工作:

@comments = @business.comments.paginate(:page => params[:page], :per_page => 7)

@comments.each do |comment|
  ...
end
will_paginate @comments

【讨论】:

  • 它不会抛出错误,但如果我将 per_page 限制更改为“1”,它仍然会显示所有三个 cmets(但在数字栏 1、2、3 中有 3 个页面可用)跨度>
  • 您是否将循环代码更改为@comments.each do |comment|?我也进行了编辑以包含该更改。
  • 是的,但这会产生错误“@businesses 变量似乎为空。您是否忘记传递 will_paginate 的集合对象?”.. 为什么将 @business.comment.each do 更改为 @comments.each doThis代码来自 RoR.org 教程http://guides.rubyonrails.org/getting_started.html#adding-a-second-model
  • 我们对@businesses 的分页更改不会影响@comments。这表明您更改了与 cmets 无关的内容,或者没有将 will_paginate 调用更改为 will_paginate(@comments)。我已将@business.comments 更改为@comments,以便您可以对它们进行分页,这在本教程中没有介绍。
  • 我并不是说我的问题听起来像是在抱怨,只是不确定更改做了什么。我的拼写错误导致更改无法正常工作 - 感谢您的帮助!
猜你喜欢
  • 2016-04-20
  • 2018-12-12
  • 2012-10-22
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2012-07-18
相关资源
最近更新 更多