我正在构建客户数据库/发票系统。使用PDFKit将发票准备好转换为可打印的PDF时,可以通过包含复选框的表单从发票索引中选择它们,这些复选框通过selected_invoices参数传递发票ID。我想捎带该方法并同时为这些特定发票创建PDF地址标签。我似乎无法弄清楚我在这里出错的地方。当调用“标签”方法时,它无法从参数中查看发票ID。在Rails中的多个方法之间传递参数
下面的代码的相关部分:
def generate_multiple_pdfs
#generate pdfs from selected invoices and save each to file
@invoices = Invoice.find(params[:selected_invoices])
files = []
@invoices.each do |invoice|
path = show_pdf_invoice_url(invoice)
filename = "invoice_#{invoice.id}.pdf"
files.push filename
kit = PDFKit.new(path)
pdf = kit.to_file("#{Rails.root}/public/invoices/#{filename}")
end
#generate address labels for selected invoices
path = labels_invoices_url
filename = "invoice_labels#{Date.today.to_formatted_s(:iso8601)}.pdf"
files.push filename
kit = PDFKit.new(path)
pdf = kit.to_file("#{Rails.root}/public/invoices/#{filename}")
...
end
这里的标签方法得到由PDFKit称为:
def labels
@invoices = Invoice.find(params[:selected_invoices])
render :layout => 'labels_layout'
end
标签方法失败,这里就是在后台发生了:
Processing by InvoicesController#labels as HTML
Invoice Load (0.3ms) SELECT "invoices".* FROM "invoices" WHERE "invoices"."id" = $1 LIMIT 1 [["id", nil]]
Completed 404 Not Found in 1ms (ActiveRecord: 0.3ms)
ActiveRecord::RecordNotFound (Couldn't find Invoice with 'id'=):
app/controllers/invoices_controller.rb:160:in `labels'
该过程的其余部分工作正常,我可以看到PDF声音正在生成。我在这里错过了什么?
谢谢!
你可以展示你是如何呼叫标签?表单发到哪里? – margo
标签由pdfkit使用labels_invoices_url路由调用:'path = labels_invoices_url',然后'kit = PDFKit.new(path)'。我不确定你问的是表单发布到的地方。 – TheStrabusiness
您必须明确地将参数传递给标签方法。 params散列只适用于你发布的方法,所以我猜表单POSTs到generate_multiple_pdfs。 – margo