Вероятно, это скорее вопрос дизайна или использования, но основная проблема заключается в использовании плагина Prawn с Rails 2.3.4 и доступе к полученному объекту PDF для его рендеринга в файл.
Сценарий в основном;
- контроллер с настройкой ответа_блока
- представление с кодом для рендеринга текста, графики и т. Д. В PDF
Похоже:
От контроллера клиента
def show
@customer = Customer.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @customer }
format.pdf { render :layout => false }
end
Из представления клиента
pdf.text "Hello World"
pdf.text "Customer is #{@customer.name}"
Это прекрасно работает, создавая файл PDF в ответ на /customers/1.pdf, как и ожидалось, с генерируемым файлом PDF.
Одним из других требований является рендеринг PDF в файл и сохранение копии на сервере. Креветка обеспечивает метод:
pdf.render_file {path_tofile}
Так что теперь, если я включу это в код View, я, конечно, могу сохранить файл на сервере. Но я бы хотел управлять этим в контроллере, поскольку он связан с логикой, а не с просмотром как таковым.
Первая попытка была:
def show
@customer = Customer.find(params[:id])
@pdf = Prawn::Document.new()
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @customer }
format.pdf { render :layout => false }
pdf.render_file {path_to_file}
end
Из представления клиента
pdf.text "Hello World"
pdf.text "Customer is #{@customer.name}"
ПРОБЛЕМА
Проблема с этой попыткой заключается в том, что PDF не отображается. Я подозревал, что переменная экземпляра контроллера конфликтует с переменной плагина Prawnto pdf
. Но даже изменение переменной PDF не сработало.
Есть предложения?