will_paginate在进行搜索时发出错误

时间:2018-03-27 10:46:51

标签: ruby-on-rails will-paginate

好的,所以我在这里以及其他地方反复搜索过,但还没有找到与我有关的解决方案。可能是因为以前的问题是前一段时间。

我的问题是我首先添加了分页,然后我被要求添加搜索以便用户可以搜索产品。当他们进行搜索时,它应该打开产品页面。如果我拿出搜索,分页并没有给我一个错误。

我现在得到的错误是

  

''未定义的方法`total_pages'对于#Products :: ActiveRecord_Relation:''

并且为错误突出显示的代码行是index.html.erb中的分页。

我错过了什么?感谢任何指导,这个新手需要它!

这是products_controller:

  def index
   if Rails.env == "development"
    name_env = "name LIKE ?"
   else
    name_env = "name ilike ?"
   end
   if params[:q]
    search_term = params[:q]
    @products = Product.search(search_term)
   else
    @products = Product.all
    @products = Product.paginate(:page => params[:page], per_page: 4)
   end
  end

这是index.html.erb:

  <div class="pagination">
   <%= will_paginate @products %>
  </div>

2 个答案:

答案 0 :(得分:1)

您在搜索时错过了paginate方法,@products = Product.search(search_term)将是这样的

.....
if params[:q]
    search_term = params[:q]
    @products = Product.search(search_term).paginate(:page => params[:page], per_page: 4)
else
    @products = Product.all.paginate(:page => params[:page], per_page: 4)
.....

另外删除此@products = Product.all不需要此内容。

毕竟,您只需粘贴此代码而不是代码,它就会缩小

def index
   if Rails.env == "development"
    name_env = "name LIKE ?"
   else
    name_env = "name ilike ?"
   end
   if params[:q]
    search_term = params[:q]
    @products = Product.search(search_term)
   else
    @products = Product.all
   end
   @products = @products.paginate(:page => params[:page], per_page: 4)
end

答案 1 :(得分:0)

修改索引操作,如下所示:

def index
    if Rails.env == "development"
        name_env = "name LIKE ?"
    else
        name_env = "name ilike ?"
    end
    @products = params[:q] ? Product.search(params[:q]) : Product.scoped
    @products.paginate(:page => params[:page], per_page: 4)
end

您也应该使用paginate进行搜索。