2016-04-16 2 views
0

Я строю базу данных клиентов/систему выставления счетов. Когда счета-фактуры готовы к конвертации в печатные 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-файлы для генерируются голоса. Что мне здесь не хватает?

Спасибо!

+0

Можете ли вы показать, как вы называете этикетки? Где находится сообщение формы? – margo

+0

Ярлыки вызывается методом pdfkit, используя route_invoices_url route: 'path = labels_invoices_url', а затем' kit = PDFKit.new (путь) '. Я не уверен, что вы спрашиваете о том, где находятся сообщения формы. – TheStrabusiness

+0

Вы должны явно передать параметры методу меток. Хеш params доступен только для метода, который вы отправляете, поэтому я предполагаю, что POST-формы формы являются generate_multiple_pdfs. – margo

ответ

0

Я попытался передаю параметры или переменные явно несколько способов, включая:

path = labels_invoices_url(@invoices) и path = labels_invoices_url(params[:selected_invoices]

Оба из которых дали мне подобные ошибки. Я попробовал другую тактику и создал две кнопки отправки на главной странице:

<%= submit_tag "Print Selected Invoices" %> <%= submit_tag "Print Labels" %>

Я воспользовался каждой кнопкой отправки их собственная фиксации в Params, и модифицированный метод generate_multiple_pdfs с если/другим даного к проверить params[:commit]:

def generate_multiple_pdfs 
    if params[:commit] == "Print Labels" 
    @invoices = Invoice.find(params[:selected_invoices]) 
    render :labels, :layout => 'labels_layout' 
    else 
    #do the invoice pdfs 
    end 
end 

Это не создает метки в формате PDF, и это занимает два щелчка вместо одного, но он работает в настоящее время.

Если кто-то знает, как передавать переменные или параметры через PDFKit, как я пытался, я бы очень благодарен им за помощь. В противном случае, похоже, я буду копать документацию, чтобы узнать, какие основные вещи я пропустил.

Спасибо!

1

изменение попытки path = labels_invoices_url к path = labels_invoices_url(@invoices)

+0

Спасибо, я ценю ваш ответ. Я уже пробовал это, но он все равно дал мне ту же ошибку «ActiveRecord :: RecordNotFound (не удалось найти счет-фактуру с« id »=): app/controller/invoices_controller.rb: 160: в« ярлыках »я закончил установку это по-другому. Я отправлю через секунду. – TheStrabusiness

Смежные вопросы