雷未定义方法`total_pages'

kaminari undefined method `total_pages'

使用 kaminari 时出现错误。

宝石文件:

# 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) 但不起作用

views/lists/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 的 railscasts 视频,但他们没有任何错误。

尝试分页:

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

您需要对这两个查询进行分页。我推荐这样的东西:

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

否则当params[:tag]为nil时@lists将不是分页对象

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

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

要修复,您可以明确引用该方法:

于是查看代码:

      <%= Kaminari::Helpers::HelperMethods.page_entries_info @events %>
      <%= link_to "Next", path_to_next_page(@events) %>
      <%= link_to "Prev", path_to_prev_page(@events) %>

并在初始化程序中 (initializers/kaminari_config.rb)

module Kaminari
  module Helpers
    module HelperMethods
      extend ActionView::Helpers::TranslationHelper
      module_function :page_entries_info
    end
  end
end

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

尝试:

order(:nome).page page

为我工作