2012-02-16 43 views
0

我越來越想生成CSV時出現以下錯誤:在ProductsController的#schedulecsv引發ArgumentError在CSV輸出

引發ArgumentError

錯誤的參數數目(0 1)

我的產品控制器設置如下:

def schedulecsv 
products = Product.find(:all) 
filename ="schedule_#{Date.today.strftime('%d%b%y')}" 
    csv_data = CSV.generate do |csv| 
    csv << Product.csv_header 
     products.each do |p| 
     csv << p.to_csv 
     end 
    end 
    send_data csv_data, 
    :type => 'text/csv; charset=iso-8859-1; header=present', 
    :disposition => "attachment; filename=#{filename}.csv" 
end 

有沒有人在這裏有任何指針?駕駛我瘋狂!

謝謝!

+0

u能發佈完整的錯誤信息.. – Bijendra 2012-02-16 13:07:16

+0

引發ArgumentError中的ProductsController#schedulecsv 錯誤的參數數目(0 1) Rails.root:/用戶/ ryanberry /儀表板 應用程序跟蹤|框架跟蹤|全面跟蹤 應用程序/控制器/ products_controller.rb:52:在'生成 ' 應用程序/控制器/ products_controller.rb:52:在'schedulecsv' 請求 參數: 無 顯示會話轉儲 顯示env轉儲 迴應 標題: 無 – Raoot 2012-02-16 13:09:19

+0

希望這就是你的意思? – Raoot 2012-02-16 13:09:47

回答

1

在/ usr/lib中/紅寶石/(你的Ruby寶石版)/csv.rb(我的機器上)

這裏csv.rb地方的來源是CSV類的generate方法的源代碼

def CSV.generate(path, fs = nil, rs = nil, &block) 
    open_writer(path, 'w', fs, rs, &block) 
end 

generate方法需要filename作爲parameter.it將與給定名稱的文件,但要調用CSV.generate名被錯過

所以你要的文件傳送的名稱中產生來電!

filename ="schedule_#{Date.today.strftime('%d%b%y')}" 
CSV.generate filename do |csv| 
    csv << Product.csv_header 
    products.each do |p| 
    csv << p.to_csv 
    end 
end 
+0

謝謝,仍然有一些麻煩。 CSV.rb文件應該在哪裏?我沒有你在下面發佈的代碼段。 – Raoot 2012-02-16 14:54:23

+0

csv.rb實際上是用於生成csv的CSV類的源,我發佈了'CSV'類的'generate'函數的源代碼。是的措辭有點混淆更新我的答案 – Naveed 2012-02-16 15:31:38