Rails 分页不加载搜索结果第二页的内容
Rails pagination does not load content for second page for search results
我有一种方法可以获取并显示搜索结果,而且效果很好。但是,每当我尝试转到第二页时,它都会提示没有内容的错误。
这是我的控制器代码:
class BuyersController < UsersController
def show
end
def search
end
def search_products
search_name = params[:search][:name]
search_category = params[:search][:category_id].to_i
search_location_id = params[:search][:location_id].to_i
search_highest_bid = params[:search][:highest_bid].to_f
@matching_products = ProductsUnderBid.search_products_under_bid(name: search_name, category_id: search_category,
location_id: search_location_id, highest_bid: search_highest_bid)
@matching_products = @matching_products.paginate(page: params[:page], per_page: 1)
end
end
尝试删除 per_page: 1,这样您就必须像这样放置代码:
@matching_products = @matching_products.paginate(page: params[:page])
我改变了下面的方法并且成功了!如您所见,我在 search_products 方法中将变量类型更改为全局,以便我可以从 show method.I 访问它,还必须在 app/view/controller_name/ 中添加 show.html.erb文件夹。希望对其他人有帮助。
def show
@matching_products = ProductsUnderBid.search_products_under_bid(name: $search_name, category_id: $search_category,
location_id: $search_location_id, highest_bid: $search_highest_bid)
@matching_products = @matching_products.paginate(:page => params[:page],:per_page => 5)
get_already_placed_bids(@matching_products)
end
def search_products
$search_name = params[:search][:name]
$search_category = params[:search][:category_id].to_i
$search_location_id = params[:search][:location_id].to_i
$search_highest_bid = params[:search][:highest_bid].to_f
@matching_products = ProductsUnderBid.search_products_under_bid(name: $search_name, category_id: $search_category,
location_id: $search_location_id, highest_bid: $search_highest_bid)
@matching_products = @matching_products.paginate(:page => params[:page],:per_page => 5)
get_already_placed_bids(@matching_products)
end
我有一种方法可以获取并显示搜索结果,而且效果很好。但是,每当我尝试转到第二页时,它都会提示没有内容的错误。
这是我的控制器代码:
class BuyersController < UsersController
def show
end
def search
end
def search_products
search_name = params[:search][:name]
search_category = params[:search][:category_id].to_i
search_location_id = params[:search][:location_id].to_i
search_highest_bid = params[:search][:highest_bid].to_f
@matching_products = ProductsUnderBid.search_products_under_bid(name: search_name, category_id: search_category,
location_id: search_location_id, highest_bid: search_highest_bid)
@matching_products = @matching_products.paginate(page: params[:page], per_page: 1)
end
end
尝试删除 per_page: 1,这样您就必须像这样放置代码:
@matching_products = @matching_products.paginate(page: params[:page])
我改变了下面的方法并且成功了!如您所见,我在 search_products 方法中将变量类型更改为全局,以便我可以从 show method.I 访问它,还必须在 app/view/controller_name/ 中添加 show.html.erb文件夹。希望对其他人有帮助。
def show
@matching_products = ProductsUnderBid.search_products_under_bid(name: $search_name, category_id: $search_category,
location_id: $search_location_id, highest_bid: $search_highest_bid)
@matching_products = @matching_products.paginate(:page => params[:page],:per_page => 5)
get_already_placed_bids(@matching_products)
end
def search_products
$search_name = params[:search][:name]
$search_category = params[:search][:category_id].to_i
$search_location_id = params[:search][:location_id].to_i
$search_highest_bid = params[:search][:highest_bid].to_f
@matching_products = ProductsUnderBid.search_products_under_bid(name: $search_name, category_id: $search_category,
location_id: $search_location_id, highest_bid: $search_highest_bid)
@matching_products = @matching_products.paginate(:page => params[:page],:per_page => 5)
get_already_placed_bids(@matching_products)
end