1

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

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

    respond_to do |format| 
    format.xls 
    end 
end 

我们正在使用rails 3.2。

+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