will_paginate 搜索时出错
will_paginate giving an error when doing a search
好的,所以我在这里以及其他地方反复搜索,但尚未找到与我相关的解决方案。可能是因为之前的问题都是前段时间的吧。
我的问题是我先添加了分页,然后我被要求添加一个搜索,以便用户可以搜索产品。当他们进行搜索时,应该只是打开产品页面。如果我取出搜索,分页不会给我错误。
我现在得到的错误是
''undefined method `total_pages' for # Product::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>
你搜索的时候漏了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
修改索引动作如下:
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
进行搜索。
好的,所以我在这里以及其他地方反复搜索,但尚未找到与我相关的解决方案。可能是因为之前的问题都是前段时间的吧。
我的问题是我先添加了分页,然后我被要求添加一个搜索,以便用户可以搜索产品。当他们进行搜索时,应该只是打开产品页面。如果我取出搜索,分页不会给我错误。
我现在得到的错误是
''undefined method `total_pages' for # Product::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>
你搜索的时候漏了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
修改索引动作如下:
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
进行搜索。