我跟着這railscast視頻,但我很難將我的數據導出到Excel(或CSV爲這件事)。從複雜的導軌導出到CSV查詢
我使用will_paginate的一些數據,我就展示前端是這樣的:
sql = "select complex..."
@data = paginate_by_sql([sql],
:per_page => params[:rows],
:page => params[:page])
所以,原樣,我想這應該工作:
respond_to do |format|
format.html
format.xls { send_data @data.to_csv(:col_sep => "\t") }
end
,它實際上下載了xls文件正確的內容都搞砸了,它每行顯示一行,像這樣內容:
#<Product:0x00000004c83328>
PS - >使用Rails最新版本
::編輯::每列 通過一排我的意思是一排只在我的Excel工作表,並在該行
COLUMN A = #<Product:0x00000004c83328>
COLUMN B = #<Product:0x00000004c83329>
COLUMN C = #<Product:0x00000004c8333>
(30列)
UPDATE
有沒有一個簡單的練習測試,並在只有一列再次結束了所有列:
csv_string = CSV.generate(:col_sep => ",") do |csv|
csv << ["row", "of", "CSV", "data"]
csv << ["another", "row"]
end
respond_to do |format|
format.html
format.csv { send_data csv_string,
:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment; filename=records.csv" }
end
(:col_sep => ",")
是可選的,我想。
結果:
我很抱歉,我不明白你的意思是我調用'to_s' ......我打電話'paginate_by_sql'什麼。雖然我意識到輸出看起來像模型轉換爲字符串...這是奇怪的。我必須接近... – tostasqb
是的,如果你在模型上調用to_s,比如'Person',你會得到類似'#'的輸出。哪一個是ActiveRecord模型的默認字符串轉換。所以,我建議你在你的模型中通過定義一個新的'to_s'方法來覆蓋這個方法。 –
ipd