我有一个Rails 4.2框架,并使用Kaminari分页。一切都很好,但是我想用Capybara测试所有的东西,因此我遇到了页面冲突。因此,我想重命名卡米纳里的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的注释,并将其设置为::kaminari_page(例如,从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的未定义的“植物”方法
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 < Rails::Application into /application.rb类中。什么都不起作用,总是同样的错误。
发布于 2021-05-06 03:28:39
您可以将文件位置显示为app/config/initializiers/kaminari_config.rb。如果这是您的文件的实际位置,它将充分解释为什么该方法不存在。位置应该是app/config/initializers/kaminari_config.rb。根据您指定的位置,应用程序启动时不会自动加载它。
如果你所显示的位置只是一种类型,那就不是原因,但是如果你没有把Capybara包含到全局对象中,那么你就不会有名字冲突。由于这个原因,当前版本的Capybara在将其包含到全局对象中时会发出警告。
另外,您是否有理由获取所有结果,然后分页,而不是使用在交互中定义的page (或plant)和per作用域?
https://stackoverflow.com/questions/67382316
复制相似问题