我试图在Rails中创建一个简单的CSV导出。除了删除/存档表项目外,导出工作正常。我猜这是因为出口遇到了空白。
这是有效的:
= link_to transactions_path(format: :csv) do
除非交易中缺少某个项目。
试过这个
= link_to transactions_path(format: :csv,skip_blanks: true) do
但是在调用导出
时我仍然得到一个ERR_INVALID_RESPONSETransactionController:
respond_to :html, :json, :csv
def index
@shops = current_user.shops
respond_with(@shops) do |format|
format.csv do
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = "attachment; filename=transactions-#{Time.now.strftime('%Y%m%d%H%M')}.csv"
render inline: @shops.to_csv
end
end
end
有什么建议吗?
答案 0 :(得分:6)
更改to_csv以传递skip_blanks。
@shops.to_csv(skip_blanks: true)
答案 1 :(得分:3)
如果您想要下载CSV文件的链接,请改用send_data
。如果要在浏览器中显示文件,请使用render text: @shops.to_csv
http://railscasts.com/episodes/362-exporting-csv-and-excel
respond_to :html, :json, :csv
def index
@shops = current_user.shops
respond_with(@shops) do |format|
format.csv do
send_data @shops.to_csv, type:'text/csv', filename: "transactions-#{Time.now.strftime('%Y%m%d%H%M')}.csv"
end
end
end
将您的link_to更改回之前的版本。
= link_to transactions_path(format: :csv)
答案 2 :(得分:1)
也许使用var COL = $(elem_title).text();
:
send_data
另外, def index
respond_to do |format|
format.csv { send_data @current_user.shops.to_csv, filename: "transactions-#{Time.now.strftime('%Y%m%d%H%M')}.csv" }
end
end
是一个实例方法吗?