Ruby on rails 4 Kaminari:未定义的方法总页数

Ruby on rails 4 Kaminari:未定义的方法总页数,ruby-on-rails-4,kaminari,Ruby On Rails 4,Kaminari,我在使用Rails 4的Kaminari上遇到问题 这是我的租车人_controller.rb def search @location = params[:search] @distance = params[:km] @renters = Renter.near(@location, 30000).order("distance") @renters = @renters.page(params[:page]) if @renters.empty? @rente

我在使用Rails 4的Kaminari上遇到问题

这是我的租车人_controller.rb

def search
  @location = params[:search]
  @distance = params[:km]
  @renters = Renter.near(@location, 30000).order("distance")
  @renters = @renters.page(params[:page])

  if @renters.empty?
    @renters = Renter.all
    search_map(@renters)
  else
    search_map(@renters)
  end
end
和my view search.html.haml

.row
  = paginate @renters
还有我的错误消息

Started GET "/search?utf8=%E2%9C%93&search=" for ::1 at 2016-03-17 09:37:59 +0100
Processing by RentersController#search as HTML
Parameters: {"utf8"=>"✓", "search"=>""}
(0.5ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "renters" WHERE (false) LIMIT 25 OFFSET 0) subquery_for_count
Renter Load (0.9ms)  SELECT "renters".* FROM "renters"
Rendered renters/search.html.haml within layouts/application (8.2ms)
Completed 500 Internal Server Error in 23ms (ActiveRecord: 1.5ms)

ActionView::Template::Error (undefined method `total_pages' for #<Renter::ActiveRecord_Relation:0x007fd4d36bdc30>):
1: .row
2:   = paginate @renters
app/views/renters/search.html.haml:2:in `_app_views_renters_search_html_haml__3667517883215455359_70276042599600'

有什么想法吗?

试试这个,我希望它能奏效

def search
  @location = params[:search]
  @distance = params[:km]
  @renters = Renter.near(@location, 30000).order("distance")

  if @renters.empty?
    @renters = Renter.all
    search_map(@renters)
  else
    search_map(@renters)
  end
  @renters = @renters.page(params[:page])
end

将此行
@renters=Renter.near(@location,30000).order(“distance”).page(params[:page])
替换为
@renters=Renter.near(@location,30000).order(“distance”)
,并将以下内容放在方法的末尾
@renters=@renters.page(params[:page])
谢谢你,阿米特,但我仍然有同样的错误。你能用我的代码更新这个问题吗?请检查我的答案并试着运行我希望它能工作。非常感谢,它能工作。如果你有5分钟的时间,你能解释一下为什么吗?当然,这会引起一个错误,因为当这个
@renters=Renter.near(@location,30000).order(“distance”)
返回空白数组时,你的代码执行
@renters=Renter.all
,并且
@renters
包含所有活动记录集合的记录,但是根据kaminari文档,在调用
=paginate@renters
之前,您的收藏应该有
.page(params[:page])
。他们的
.page
将活动记录集合转换为kaminari。
def search
  @location = params[:search]
  @distance = params[:km]
  @renters = Renter.near(@location, 30000).order("distance")

  if @renters.empty?
    @renters = Renter.all
    search_map(@renters)
  else
    search_map(@renters)
  end
  @renters = @renters.page(params[:page])
end