will_paginate gem中的undefined方法total_pages

时间:2013-06-01 16:38:52

标签: ruby-on-rails-3 will-paginate

我在will_paginate gem

中遇到错误

在控制器中

@like_posts = current_user.likes.order("created_at DESC").page(params[:page]).per_page(10).map(&:post)

当我在视图中使用时

<%= will_paginate(@like_posts) %><br/>
<%= page_entries_info(@like_posts) %><br/>

我收到了这个错误

undefined method `total_pages' for #<Array:0xaae2dec>

24: <%= will_paginate(@like_posts) %><br/>
25: <%= page_entries_info(@like_posts) %><br/>

如果我在控制器中改变了这个

   @like_posts = current_user.likes.order("created_at DESC").map(&:post).page(params[:page]).per_page(10)

我有这个错误

 undefined method `page' for#<Array:0xabcd34c>

任何帮助?

2 个答案:

答案 0 :(得分:0)

我的主要问题是我希望分页能够在静态数组上运行而且非常危险,所以will_paginate会拒绝它并喜欢使用数据库中的查询

这是will_paginate

的问题解决方法

https://github.com/mislav/will_paginate/wiki/Troubleshooting

我通过制作2个对象来解决它

   @likes = current_user.likes.order("created_at DESC").page(params[:page]).per_page(5)
   @like_posts = @likes.map(&:post)

在视图中

  <%= will_paginate @likes %><br/>
  <%= page_entries_info @likes %><br/>

使用@likes进行分页,使用@like_posts迭代帖子

答案 1 :(得分:0)

可以通过在您的require 'will_paginate/array'顶部添加application_controller.rb来解决此问题:

require 'will_paginate/array'

class ApplicationController < ActionController::Base
end