Я пытаюсь создать pdf-файл, и по какой-то причине я продолжаю получать ошибку метода, когда пытаюсь сделать PDF. Буквально не знаю, что делать, поскольку все, что я пытаюсь в этот момент, - это сделать пустой pdf.Prawn - NoMethodError: частный метод `p ', вызываемый для объекта
NoMethodError: private method `p' called for #<OrderPdfCreator:0x007f9365053a20>
OrderController
require 'order_pdf_creator'
def print_store_invoice
# print the store invoice...
@order = Order.find_by_id(params[:id])
# create the pdf
pdf = OrderPdfCreator.new(@order)
render :attachment => pdf.p, :filename => "#{@order.id}.pdf", :layout => false
end
OrderPdfCreator.rb
# encoding: UTF-8
require 'open-uri'
class OrderPdfCreator < BasePdfCreator
def initialize(order)
@pdf = Prawn::Document.new(:page_size => 'A4')
@pdf.font_size = 14
@order_pdf = order
file_path = File.join(Rails.root,'tmp',"#{@order_pdf.id}.pdf")
p = File.open(file_path, 'wb') { |f| f.puts @pdf.render }
end
end
BasePdfCreator.rb
# encoding: UTF-8
class BasePdfCreator
private
def blank_line
@pdf.text ' '
end
end
ах да круто спасибо. пропустил это. Теперь он ищет шаблон 'print_store_invoice', и у меня есть его в местоположении, которое он ищет, но, похоже, не может его найти. Я также думаю, что говорить о том, чтобы сделать привязку и макет false, не позволит найти шаблон? – Robbo
Когда я пользуюсь креветкой, мой звонок: 'send_data pdf, : type => 'application/pdf', расположение: 'inline''. 'Disposition: 'inline' 'гарантирует, что он отобразится в том же окне/вкладке, а не в новом всплывающем окне. –
Отлично, это меня подобрало, но теперь, когда он пытается отобразить pdf, он говорит: «Не удалось загрузить pdf-документ». В журнале нет ошибок. – Robbo