在我的rails应用程序中,我有一个简单的类,它将发票转换为csv格式:
require 'csv'
class InvoiceCsvExporter
def initialize(invoices)
@invoices = invoices
end
def export
CSV.generate do |csv|
generate_invoice_headers
generate_invoices
end
end
private
def generate_invoice_headers
csv << ["Invoice number", "Company", "Customer", "State", "Invoice date",
"Delivery date", "Subtotal", "Total", "Tax", "Offer", "Contract"]
end
def generate_line_item_headers
csv << ["Line Items:"]
csv << ["Product", "Description", "Quantity", "Unit price", "Discount type", "Discount", "Amount"]
end
def generate_invoices
@invoices.each do |invoice|
csv << []
csv << [invoice.format_id, invoice.company.name, invoice.customer.fullname, invoice.aasm_state,
invoice.invoice_date, invoice.delivery_date, invoice.subtotal.round(2), invoice.total.round(2),
invoice.tax, invoice.invoice_offer, invoice.invoice_contract]
generate_line_item_headers
generate_line_item(invoice)
end
end
def generate_line_item(invoice)
invoice.line_items.each do |line_item|
csv << [line_item.product.name, line_item.description, line_item.quantity,
line_item.unit_price, line_item.discount_type, line_item.discount_value, line_item.total_price.round(2)]
end
csv << []
end
end在我的导出方法中,我尝试使用这个generate_invoice_headers方法,但是它给出了一个错误:
undefined local variable or method `csv' for #<InvoiceCsvExporter:0x007f6a255ef218>我该如何处理这个问题?
发布于 2014-09-04 06:56:39
您需要使用局部变量:
def export
CSV.generate do |csv|
@csv = csv
generate_invoice_headers
generate_invoices
end
end然后将csv调用更改为@csv
另一种处理方法:将param传递给方法。
https://stackoverflow.com/questions/25658817
复制相似问题