簡體   English   中英

Ruby / Rails - kaminari undefined方法分頁錯誤

[英]Ruby/Rails - kaminari undefined method pagination errors

我不知道我做了什么,但是kaminari已經開始在我的應用程序中表現得很奇怪了。

在我的控制器中:

@producers = Producer.order(:name).page(params[:page])

視圖:

<%= paginate @producers %>

結果是:

undefined method `num_pages' for #<ActiveRecord::Relation:0x000001026e6308>

如果我在我的控制器中添加.per:

@producers = Producer.order(:name).page(params[:page]).per(25)

我明白了

undefined local variable or method `per' for #<ActiveRecord::Relation:0x0000010928ef60>

最后,奇怪的是,如果我將.order(:name)移動到最后,它可以工作:

@producers = Producer.page(params[:page]).order(:name)

我猜我安裝的其他一些寶石有一個page范圍或方法導致問題?

謝謝。

嗯,剛想通了。 我安裝了Active Admin 它將will_paginate安裝為依賴項。

Active Admin的最新提交中, will_paginate已被kaminari取代。

我改變了我的Gemfile以從github拉出Active Admin will_paginate已從我的包中刪除,現在一切正常。 您可以通過將以下行放入gemfile中來完成此操作:

gem "activeadmin", git: "https://github.com/gregbell/active_admin"

我對另一個需要will_paginate的gem有同樣的問題。 使用此代碼片段解決了該問題,該代碼段取自active_admin wiki頁面:

if defined?(WillPaginate)
  module WillPaginate
    module ActiveRecord
      module RelationMethods
        def per(value = nil) per_page(value) end
        def total_count() count end
      end
    end
    module CollectionMethods
      alias_method :num_pages, :total_pages
    end
  end
end

把它放在初始化器中。

要解決這個問題,請包含gem 'kaminari'並刪除will_paginate 由於我已經使用了will_paginate ,我剛剛更新了當前對kaminari的will_paginate調用。 它們與實現非常相似,並且易於更改。

我嘗試了johnnycakes的解決方案,但它一直給我在儀表板上的堆棧級別太深的錯誤(類似於https://github.com/gregbell/active_admin/issues/157

我找到的解決方案是指定此修訂:

gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git', :ref => '811f286fda3b6dfa91aa'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM