Я строю базу данных клиентов/систему выставления счетов. Когда счета-фактуры готовы к конвертации в печатные PDF-файлы с использованием PDFKit, они выбираются из индекса Invoices через форму, содержащую флажки, которые передают идентификаторы счетов через параметр selected_invoices. Я хочу поменять этот метод и создать метки адресов PDF для этих конкретных счетов-фактур одновременно. Я не могу понять, где я ошибаюсь. Когда вызывается метод меток, он не может видеть идентификаторы счетов из параметров.Передача параметров между несколькими методами в 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, используя route_invoices_url route: 'path = labels_invoices_url', а затем' kit = PDFKit.new (путь) '. Я не уверен, что вы спрашиваете о том, где находятся сообщения формы. – TheStrabusiness
Вы должны явно передать параметры методу меток. Хеш params доступен только для метода, который вы отправляете, поэтому я предполагаю, что POST-формы формы являются generate_multiple_pdfs. – margo