kaminari undefined方法`total_pages'

时间:2016-03-17 20:24:12

标签: ruby-on-rails ruby kaminari

我使用kaminari,并且错误。

的Gemfile:

# gem 'will_paginate', '~> 3.0.6'
# gem 'will_paginate-bootstrap'

gem 'kaminari'

lists_controller.rb

  def index
    if params[:tag]
      @lists = List.tagged_with(params[:tag]).order(created_at: :desc).paginate(page:params[:page], per_page: 3 )
    else
      @lists = List.all.order(created_at: :desc)
    end
  end

我也是用户.page params[:page].per(2)关注.order(created_at: :desc) 但没有工作

视图/列表/ index.html.erb

<%= paginate @lists %>

错误在这里

undefined method `total_pages' for #<List::ActiveRecord_Relation:0x007fa2303e3fa8>
Extracted source (around line #26):             
    </div>
  </div>
<%= paginate @lists %>
  <div class="container"> 
    <div class="row">
      <div class="col-md-8">

我不知道该怎么做,我是复制关于kaminari的railscast,视频很好,我有一个bug。 谢谢帮帮我。

4 个答案:

答案 0 :(得分:7)

您需要对两个查询进行分页。我建议像:

def index
  if params[:tag]
    @lists = List.tagged_with(params[:tag])
  else
    @lists = List.all
  end
  @lists = @lists.order(created_at: :desc).paginate(page:params[:page], per_page: 3 )
end

@lists为零时,params[:tag]将不会成为分页对象。

答案 1 :(得分:1)

尝试分页:

 List.tagged_with(params[:tag]).order(created_at: :desc).page(params[:page]).per(3)

答案 2 :(得分:0)

我有一个类似的问题,这是因为commonrator gem从will_paginate引入了方法并覆盖了ActiveRecord基类。

page_entries_info方法的调用堆栈中出现错误,这似乎是两个库之间的通用方法名称。

要解决此问题,您可以使用以下方法明确引用该方法:

所以查看代码:

function validateFunction($input1, $input2) {
  return $input1 ^ $input2;
} 

和初始化程序(initializers / kaminari_config.rb)

<link href="bootstrap4-glyphicons/css/bootstrap-glyphicons.css" rel="stylesheet">

这是一个非常棘手的修复程序,但希望对您有所帮助。

答案 3 :(得分:-1)

尝试:

order(:nome).page page

为我工作