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

在Reports Controller 中,我尝试同时传递@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

然后,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

但是每次,我都会得到未过滤的current_user.bookings列表。为什么?

最佳答案

要将仅过滤后的结果导出为csv,应确保搜索参数包含在您要生成csv的url中。

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

关于ruby-on-rails - Ransack导出结果到CSV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16987242/

10-11 22:34
查看更多