Kaminari page_method_name 配置失败

我有一个 Rails 4.2 框架并使用 Kaminari 进行分页。一切都很好,但我想用 Capybara 测试一切,因此我遇到了页面冲突。所以我想重命名 Kaminari 的 page_method_name 并遵循他们的指南:

$ bundle exec rails g Kaminari:config

这导致了这个文件

app/config/initializers/kaminari_config.rb

Kaminari.configure do |config|
     config.page_method_name = :plant
end

其中我简单地取消了 config.page_method_name 的注释并将其设置为 :plant(作为 Kaminari 文档中的示例,以避免任何保留的方法名称冲突,例如 :kaminari_page)。 然后我将相应的控制器调整为

    def index
      @q = Interaction.published.order(updated_at: :desc).limit(200).ransack(params[:q])
      @selection = @q.result
      @interactions = Kaminari.paginate_array(@selection).plant(params[:page]).per(10)
      respond_to do |format|
        format.html
        format.js
      end
    end

我重新启动了一切并在访问时出现此错误

#Kaminari::PaginatableArray:0x00005568fb42ba30 的未定义方法 `plant'

Gemfile.lock:

kaminari (1.2.1)
      activesupport (>= 4.1.0)
      kaminari-actionview (= 1.2.1)
      kaminari-activerecord (= 1.2.1)
      kaminari-core (= 1.2.1)
    kaminari-actionview (1.2.1)
      actionview
      kaminari-core (= 1.2.1)
    kaminari-activerecord (1.2.1)
      activerecord
      kaminari-core (= 1.2.1)
    kaminari-core (1.2.1)

然后我在谷歌上搜索并添加了 require 'kaminari'(这没有多大意义,因为我没有得到 uninit 常量错误),并将 Kaminari 配置部分包含到类 Application

iCMS 回答:Kaminari page_method_name 配置失败

您将文件位置显示为 app/config/initializiers/kaminari_config.rb。如果这是您的文件的实际位置,它完全解释了为什么该方法不存在。位置应为 app/config/initializers/kaminari_config.rb。使用您指定的位置,它不会在应用启动时自动加载。

如果您显示的位置只是一个类型,那么这不是原因,但是如果您没有将 Capybara 包含到全局对象中(无论如何您都不应该这样做),那么您将不会有名称冲突。出于这个原因,当前版本的 Capybara 在您将其包含到全局对象中时会发出警告。

还有什么理由让您抓取所有结果然后对它们进行分页,而不是使用将在 Interaction 上定义的 page(或 plant)和 per 范围?

本文链接:https://www.f2er.com/475619.html

大家都在问