我在这段代码中遇到了奇怪的问题:
def export_csv
user = User.find_by_u_token(params[:u])
return render json: {status: 'error', descr: 'INVALID_U_TOKEN'} if !user
return render json: {status: 'error', descr: 'INVALID_DELIMITER'} if !user.csv_del
return render json: {status: 'error', descr: 'PARAMS_NOT_DEFINED'} if !params[:invoices]
return render json: {status: 'error', descr: 'INVALID_USER_TYPE'} if !user.contractor? && !user.customer?
invoices = invoices_for_user(user)
pinvoices = params[:invoices].split(' ')
return render json: {status: 'error', descr: 'INVALID_INVOICES'} if !check_invoices(invoices, pinvoices)
export_invoices(pinvoices, user.csv_del)
send_file("file.csv")
return render json: {status: 'ok'}
end
My
export_invoices
方法:def export_invoices(pinvoices, delimiter)
CSV.open("file.csv", "wb", {:col_sep => delimiter}) do |csv|
Invoice.find(pinvoices).each do |i|
csv << i.attributes.values
end
end
end
我犯了个错误。
我试着评论这句话,一切都正常。
问题在哪里?
最佳答案
基本上,您收到的错误消息告诉您只能调用render
一次。send_file
实际上正在进行渲染。当到达执行另一个呈现的代码中的最后一行时,将得到错误。
问题是,您希望代码最终呈现什么?是CSV文件还是json响应你不能两者都有。显然,您希望删除返回json响应的行。