排序和求助记录仍然应用了第一种排序

时间:2016-07-29 15:58:39

标签: ruby-on-rails sorting

我有一个视图,显示服务列表。在此视图中,有一些排序功能,例如顶部的按钮,可以单击这些按钮以仅显示符合该选项的记录。例如,单击已批准将仅显示已批准的服务。我也有表格列可点击进行排序。例如,您可以单击创建日期,表格将按日期显示升序或降序记录。

reportElement

我的问题是,如果我选择了已批准的按钮,并且只显示已批准的记录,如果我按日期排序,它将重新查询数据库并返回所有记录而不仅仅是批准的记录。

任何人都可以建议我如何将新参数与已经应用于视图的参数结合起来。

1 个答案:

答案 0 :(得分:0)

ActiveRecord关系是可链接的,因此您可以一个接一个地链接所有条件。例如:

@campaigns = @my_campaigns

if params[:search_link]
  @campaigns = @campaigns.includes(:partner).where(status: params[:search_link])
end

if params[:sort]
  @campaigns = @campaigns.order(sort_column + " " + sort_direction)
end

它很便宜,因为它只是查询结构。当您在视图中使用@campaigns时,整个查询仅在稍后执行。