我在这段代码中遇到了奇怪的问题:

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

Myexport_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响应的行。

10-05 20:33
查看更多