Ransack导出结果为CSV

Nic*_*ick 5 ruby-on-rails ransack

我正在尝试将Ransack(Railscast)结果列表导出为CSV文件(Railcast).但是,它会持续导出所有对象,而不是Ransack搜索返回的结果.谁能告诉我哪里出错了?

在Reports控制器中,我尝试传递@bookings和@ search.result:

  def index
    @search = current_user.bookings.search(params[:q])
    @bookings = @search.result
    @search.build_condition
    respond_to do |format|
      format.html 
      format.csv { render text: Booking.to_csv(@bookings) }\
    end
  end
Run Code Online (Sandbox Code Playgroud)

然后是Booking to_csv方法:

  def self.to_csv list
    CSV.generate do |csv|
      csv << column_names
      list.each do |booking|
        csv << booking.attributes.values_at(*column_names)
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

然而,每次,我都会得到未经过滤的current_user.bookings列表.为什么?

小智 12

要仅将筛选结果导出为csv,您应确保搜索参数包含在您调用以生成csv的URL中.

因此,如果要导出在html页面上看到的结果,则应调用: reports_path(params.merge(format: 'csv')