will_paginate undefined方法'per'

时间:2013-12-04 04:47:59

标签: ruby-on-rails will-paginate

我最近在我的开发博客中安装了will_paginate gem,但我遇到了麻烦。我把它添加到我的gemfile:

gem 'will_paginate'

然后将其送入帖子控制器:

def index
  @posts = Post.paginate(:per_page => 5, :page => params[:page], :order => 'created_at DESC')

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @posts }
    format.atom
  end
end

最后进入视图:

 <div id="post" style="background-color: gray; border-radius: 20px; border-bottom: solid    black 2px; padding-bottom: 40px; padding-top: 40px; margin: auto;">
    <%= post.content.html_safe %>
 </div>
<br />
<div style="padding-bottom: 40px; background-color: brown;">
    <li>Posted:&nbsp;&nbsp;<%= post.created_at.to_formatted_s(:long) %></li>
    <li>Author:&nbsp;&nbsp;<%= post.author_name %></li>
    <li>Comments:&nbsp;&nbsp;<%= post.comments.count %></li>
</div>
<br />
<br />

<%= will_paginate @posts %>

索引页面工作正常。它目前没有分页,因为我没有在开发环境中创建足够的帖子(将通过管理面板创建它们,遇到这个)。它也可以在Admin面板上正常工作(使用active_admin)。只有当我点击管理面板上的“帖子”(或任何其他链接)来发布新帖子时,我才会收到以下错误:

NoMethodError in Admin::PostsController#index
undefined method `per' for #       <ActiveRecord::Relation::ActiveRecord_Relation_Post:0x5b37d30>

我不确定如何继续,并感谢任何帮助。很抱歉这个简单的问题。

1 个答案:

答案 0 :(得分:18)

看起来ActiveAdmin使用Kaminari进行分页,与will_paginate冲突。

请参阅此处了解解决方法:https://github.com/gregbell/active_admin/blob/47aa68d33da02c2c05cf1769402aac3df0ad02c7/docs/0-installation.md

# config/initializers/kaminari.rb
Kaminari.configure do |config|
  config.page_method_name = :per_page_kaminari
end