如何将xls写入tmp文件夹

时间:2016-08-18 09:33:16

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 export-to-csv

我按照railscasts教程了解如何渲染excel文件(http://railscasts.com/episodes/362-exporting-csv-and-excel)。 我们已经有很多代码,所以我试图通过使用gem来避免重写。如何让它写入rails / temp目录而不是让用户下载它?生成之后,我只需将其附加到电子邮件中并发送给用户,而不是让用户等待很长时间。我现在的问题是如何写入临时目录。

def mymethod
  @products = Product.order(:name)

  respond_to do |format|
    format.xls
  end
end

我们正在使用rails 3.2。

1 个答案:

答案 0 :(得分:0)

这是如何将CSV写入tmp文件的非常一般的例子

require 'csv'

def my_method
  @products = Product.order(:name)

  product_csv = CSV.generate do |csv|
          #you have to add values to CSVs inside arrays
          csv << %w(column_name1 coulmn_name2 column_name3)

          @products.each do |pd|
            csv << [pd.name,
                    pd.price,
                    pd.product_line]
          end
        end

  File.open("tmp/product.xls", 'w:UTF-8') {|file| file.write(product_csv)}
end