好的,所以我在这里以及其他地方反复搜索过,但还没有找到与我有关的解决方案。可能是因为以前的问题是前一段时间。
我的问题是我首先添加了分页,然后我被要求添加搜索以便用户可以搜索产品。当他们进行搜索时,它应该打开产品页面。如果我拿出搜索,分页并没有给我一个错误。
我现在得到的错误是
''未定义的方法`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>
答案 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
进行搜索。