【问题标题】:kaminari undefined method `total_pages'kaminari 未定义的方法`total_pages'
【发布时间】:2016-07-04 10:01:02
【问题描述】:

在使用 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) 但不工作

视图/列表/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 视频,但他们没有任何错误。

【问题讨论】:

    标签: ruby-on-rails ruby kaminari


    【解决方案1】:

    尝试分页:

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

    【讨论】:

    • 为我工作。谢谢
    【解决方案2】:

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

    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 将不是分页对象。

    【讨论】:

    • 感谢一百万!它工作,非常非常感谢。添加@list 。用户 .page(params[:page]).per(5) ``` @lists = @lists.order(created_at: :desc).page(params[:page]).per(5) ``` 页面好的。
    • @user5590209 如果我已经解决了您的问题,请点击旁边的复选标记接受我的回答。
    • 谢谢提醒,我是新来的。现在可以了吗?选择你的答案是最好的和小妞耐克标志。
    【解决方案3】:

    我遇到了类似的问题,这是因为 commontator gem 引入了 will_paginate 的方法并覆盖了基础 ActiveRecord 类。

    错误出现在 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
    

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

    【讨论】:

      【解决方案4】:

      试试:

      order(:nome).page page
      

      为我工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        • 2012-10-24
        相关资源
        最近更新 更多